随笔分类 - -----图论 1.最短路
摘要:题目链接:hdu 5521 Meeting 题意: 有n个点,m个集合,每个集合之间的点到达的时间是相同的。 问一个人从1出发,一个人从n出发,他们相遇的最小时间是多久。 题解: 对于第i个集合,新设立一个点n+i,然后addedge(n+i,x,time),addedge(x,n+i,time)
阅读全文
摘要:题目链接:hdu 6166 Senior Pan 题意: 给你一张有向图,现在选出k个点,问这k个点中,所有的点对的距离中,最短的那条是多少。 题解: 官方题解说的很清楚了。 类比cf 835E,枚举二进制位按照标号当前位为1 和当前位为0分为两个集合,每次求解两个集合之间的最短路即可覆盖到所有的点
阅读全文
摘要:题目链接:hdu 6071 Lazy Running 题意: 给你4个点,每两个相邻点有一个距离,现在让你在这四个点来回跑步,从2开始,最后回到2,问你找一个距离ans,ans>=k,问最小的ans是多少。 题解: Claris的官方题解: 1 #include<bits/stdc++.h> 2 #
阅读全文
摘要:题目链接: Codeforces Round #406 (Div. 2) D. Legacy 题意: n个点,m条边,起始点为s。一共有三种建边方式。 1:建立一条a->b权值为c的单向边、 2:建立一条v->[l,r]权值为d的单项边。 3:建立一条[l,r]->v权值为d的单项边。 求起点到各个
阅读全文
摘要:题目链接:hdu 6026 Deleting Edges 题意: 给你n个点,和一个邻接矩阵,非0表示有边,0表示没边。 现在让你删一些边,构成一棵树,使得每个点到0这个点的距离为没删边之前的最短路。 问有多少棵这样的树。 题解: 首先,题意说从0点开始对每个点都最短路,那么用单源最短路就能搞定。
阅读全文
摘要:题目链接:PAT L2-001. 紧急救援 题意: 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶
阅读全文
摘要:题目链接:hdu 1704 Rank 题意: 有n个人,m场比赛,a与b打,每场都是awin,问不能确定其中两个人的win情况数。 题解: floyd传递闭包,这里我用bitset优化了一下。 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int
阅读全文
摘要:题目链接:hdu 1706 The diameter of graph 题意: 给你一个图,定义图的直径为所有两点距离最短路中的最长的那条。 问图的直径为多长,有多少条。 题解: 将folyd改一改,加一个计数的数组就行了,然后就是注意重边的处理。 1 #include<bits/stdc++.h>
阅读全文
摘要:题目链接:hdu 2807 The Shortest Path 题意: 如果矩阵A*B=C,那么就表示A-->B有一条单向路径,距离为1. 给一些矩阵,然后问任意两个矩阵直接的距离。 题解: 把矩阵读进来后处理一下邻接矩阵,然后Folyd一下。 1 #include<cstdio> 2 #inclu
阅读全文
摘要:题目链接:Floyd-Warshall 题意: 给你n个点,m条边,100>m-n>0,现在有q个询问,问你任意两点的最短距离,题目保证每条边都被连接,每条边的距离为1 题解: 首先我们可以看到边最多只比点多100个,那么我们可以先将n-1条边生成一棵树,然后用LCA来求最短距离。 然而有可能最短路
阅读全文
摘要:题目链接:hdu_5889_Barricade 题意: 有n个点,m条边,每个边的长度都为1,每个边有一个消耗w,如果要阻断这条路,那么就会消耗w,现在让你阻断点1到点n的所有最短路,问你最小的消耗是多少 题解: 先用dij算出最短路,然后再枚举每一条边,如果dis[u]+1=dis[v],那么久在
阅读全文
摘要:题目连接:hdu_2544_最短路 存个自己写的SPFA的板子 1 #include<cstdio> 2 #include<cstring> 3 #define mst(a,b) memset(a,b,sizeof(a)) 4 #define F(i,a,b) for(int i=a;i<=b;i+
阅读全文
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5418 题意:给你n个点,和一些边,找一条路径经过全部的点,并回到起点,问最小的花费是多少, 题解:m<=1e5,n<16,说明有多边,需要处理一下,处理完用floyd跑一下,然后进行状态压缩dp。 1
阅读全文
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1245 题意:给一个已知直径的圆形岛,然后岛的附近是湖,湖里有一些点,以坐标的形式给出,最外层是矩形的终点。 给定跳跃的距离d,让你判断是否能跳到最外层,如果能就输出最短距离以及这个最短跳的步数。 题解:
阅读全文