![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论_最短路
文章平均质量分 77
wang2147483647
这个作者很懒,什么都没留下…
展开
-
Hdu 5521 Meeting(建图+最短路)
题目地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=5521 思路:边数太多,不能直接建图。对于每个集合,设置一个虚拟点,对于每个集合中的点u:连一条u->S权值为0的边(点在集合中,花费为0);连一条S->u权值为w的边(从集合中一点到另一点花费w)。分别计算从点1到i和从点n到i的最短路,枚举i,则ans=min( ans,max ( d原创 2016-08-19 20:40:43 · 714 阅读 · 0 评论 -
Hdu 6201 transaction transaction transaction(最长路)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6201 思路: 1.选择两点,一点作为买入,一点作为卖出,每经过一条边需一定花费,求最大利润。 2.选择最短路中若求一起点集合到一终点集合的最短路,可通过设置一源点与一汇点求得。 3.对于此问题,可分为买入集合与卖出集合。设置一源点,向所有节点连边,权值为-w[i],在该点买入;设置一汇点,所有原创 2017-09-29 16:37:39 · 451 阅读 · 0 评论 -
hdu 6166 Senior Pan(SPFA+二进制分组)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6166 思路: 1.从集合A中一点到集合B中一点的最短路径:设立源点0,连向所有A集合中的点,边权值为0;设立汇点,B集合中点向其连边,边权值为0。求源点到汇点的最短路即为集合A到集合B的最短路。 2.将最短两点分别分到A、B集合:由于图中任意两点标号不同,其二进制表示中必有至少一位不同。按二进制原创 2017-08-25 21:28:24 · 726 阅读 · 0 评论 -
Poj 3411 Paid Roads(最短路)
题目地址:http://poj.org/problem?id=3411 思路:记录状态,松弛操作时判断即可。 #include #include #include #include #include #define debug using namespace std; const int maxn=15; const int INF=0x3f3f3f3f; struct Edge {原创 2017-03-07 16:08:43 · 464 阅读 · 0 评论 -
Poj 3662 Telephone Lines(最短路+二分)
题目地址:http://poj.org/problem?id=3662 思路:题目即为从连接1--n的边中找出一条最长的边,使得不多于k条边大于此边。则可以二分边长L(从0到边长最大值),求连接1--n的边中有多少条边的边长大于该边长:建立新图,将所有大于该边长的边权值设为1,其他边的权值为0,则求1->n的最短路即为连接1-->n的边中大于该边的边的个数,若其小于等于k则继续二分1---L-1原创 2017-03-03 19:34:07 · 604 阅读 · 0 评论 -
UVA 12661 Funny Car Racing(最短路)
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4399 思路:判断当前时间加上通过时间是否能通过(Tnow%(a+b)+t #include #include #include #include #include using namespa原创 2017-02-11 23:39:13 · 546 阅读 · 0 评论 -
UVA 10048 Audiophobia(Floyd)
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=989 思路:FLoyd过程中将加变为取max,取min变为取max。即对于两点i、j,将k作为中转点,取i->k,k->j最大值,作为最长边,取所有i->k->j最小值,作为i、j两点的最大边权原创 2017-02-09 16:10:46 · 241 阅读 · 0 评论 -
UVA 658 It's not a Bug, it's a Feature!(状压+隐式图+最短路)
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=599 思路:所有状态构成点数2^n,但有些状态可能无法到达,所以无需存储全部点,只需在扩展当前状态时,枚举所有补丁,看补丁是否能打上即可。使用状压表示全部bug,初始时每一位全部为1,,则答案为原创 2017-02-09 22:25:37 · 378 阅读 · 0 评论 -
Hdu 3631 Shortest Path(Floyd插点)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3631 思路:Floyd,对于已求出最短路的图,若增加一点k及相应的边,则只需将k当做中间节点更新点u与点v的距离即可。因此,每增加一个标记点时,则将标记点当做中间节点更新最短路径,由于点数只有300,时间上可以承受。 #include #include #include #include usin原创 2017-02-07 23:29:09 · 356 阅读 · 0 评论 -
poj 3160 Father Christmas flymouse(强连通缩点+最长路)
题目地址:http://poj.org/problem?id=3160 思路:将所有点权值为负数的点设为0,,同一强连通分量中的点可全部选择,因此将其看做一点。在新图中求最长路径即可。最长路径:由于为给定起点,(1)从所有入度为0的点开始,进行DFS;(2)设置一虚拟节点,将其与入度为0的点相连,SPFA求最长路径。 SPFA版 #include #include #include #inc原创 2017-02-07 20:08:45 · 432 阅读 · 0 评论 -
poj 3114 Countries in War(强连通缩点+最短路)
题目地址:http://poj.org/problem?id=3114 思路:Tarjan缩点+SPFA最短路。 #include #include #include #include #include #define debu using namespace std; const int maxn=500+50; const int maxm=250000+50; const int IN原创 2017-02-07 15:30:45 · 283 阅读 · 0 评论 -
poj 2449 Remmarguts' Date(K短路)
题目地址:http://poj.org/problem?id=2449 思路:K短路模板,A*算法。估价函数=当前值+当前位置到终点的距离,即f(p)=g(p)+h(p),每次扩展估价函数值最小的一个。选择f(p)最小的点,若其为t,则计算其出队次数,次数等于k时,即为第k短路长度。 #include #include #include #include #include using name原创 2017-02-06 01:03:27 · 276 阅读 · 0 评论 -
Hdu 5876 Sparse Graph(补图最短路)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5876 思路:用set维护未访问节点。BFS时,对于点u,枚举所有未访问点v,若u、v在原图中无边连接,则将v点入队·,更新最短距离,并且删除点v。 #include #include #include #include #include #include using namespace std;原创 2016-09-24 19:47:05 · 878 阅读 · 0 评论 -
UVAlive 6800 The Mountain of Gold?(负环判断)
题目地址:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4812 思路:若存在负环且0点在负环中,则有解。则用SPFA判断是否存在负环,若点i在负环中,则该点的dist置为-INF(下次不再访问),若某点已在负环中,则更新时该点无需进入队原创 2016-08-24 19:33:56 · 666 阅读 · 0 评论 -
Codeforces Beta Round #95 (Div. 2) D. Subway(环最短路)
题目地址:http://codeforces.com/problemset/problem/131/D 思路:寻找环。首先将度数为1的节点入队,将与度数为1的节点的度数减一。将度数小于2的节点入队并标记,最后没有被标记的节点就是组成环的节点。 #include #include #include #include #include #include #define debu using n原创 2016-07-26 20:09:00 · 362 阅读 · 0 评论 -
Hdu 3696 Farm Game(最长路)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3696 思路:每种商品可以直接卖掉,也可以换购后卖掉。所以设点n+1,从该点向每个商品连边权值为log(p[i])(将乘法转换为加法,直接使用SPFA)表示直接卖掉的单位价值;对于可以换购的商品 i-->j,连 j--> i 权值为log(b[j])的边(反向建图,只需求一次最长路),表示单位 i原创 2016-08-05 19:59:58 · 760 阅读 · 0 评论 -
Uva 11146 Insurrection(最短路+最小割)
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2087 思路: 1.删除k个点使得点1到点n不连通。 2.拆点。将每个点拆为i和i’,容量为删除该点的花费(即为从1点到该点的最短路+n点到该点的最短路)。 3.对于原图中的无向边i-j,原创 2017-10-21 16:16:56 · 686 阅读 · 0 评论