最短路
Dilly__dally
这个作者很懒,什么都没留下…
展开
-
【模板】最短路之Dijkstra算法(堆优化)
具体学习参考https://blog.csdn.net/qq_35644234/article/details/60870719#commentBox模板题HDU2544。O(n^2)//Dijkstra 单源最短路//权值必须是非负/** 单源最短路径,Dijkstra 算法,邻接矩阵形式,复杂度为O(n^2)* 求出源 beg 到所有点的最短路径,传入图的顶点数,和邻接矩...原创 2018-09-03 00:35:13 · 987 阅读 · 0 评论 -
poj 2240 (spfa判正环)
题意:给你m种货币,给你m种货币兑换规则,问通过这些规则最后能不能盈利。eg:1美元换0.5英镑,1英镑换10法郎,1法郎换0.21美元,这样1美元能换0.5*10*0.21=1.05美元,净赚0.05美元。思路:spfa判变大环。#include<iostream>#include<queue>#include<string>#include&...原创 2018-11-24 14:34:06 · 162 阅读 · 0 评论 -
POJ 3660 Cow Contest (floyd变形)
题意:有n(1<=n<=100)个学生参加编程比赛。给出m条实力信息。(1<=M<=4500)其中每一条的格式为 A B (1<=A<=N,1<=B<=N,A!=B) 意思是A的实力比B强。如果A比B强且B比C强,那么A一定比C强。问最后有多少名学生可以确定他的排名。保证输入信息不存在矛盾思路:初始化有联系的点得边为1...原创 2018-11-22 22:17:35 · 152 阅读 · 0 评论 -
POJ 1860(spfa+判断正环)
题意:我们的城市有几个货币兑换点。让我们假设每一个点都只能兑换专门的两种货币。可以有几个点,专门从事相同货币兑换。每个点都有自己的汇率,外汇汇率的A到B是B的数量你1A。同时各交换点有一些佣金,你要为你的交换操作的总和。在来源货币中总是收取佣金。 例如,如果你想换100美元到俄罗斯卢布兑换点,那里的汇率是29.75,而佣金是0.39,你会得到(100 - 0.39)×29.75=2963.3975...原创 2018-11-22 17:13:06 · 276 阅读 · 1 评论 -
CodeForces - 295B(最短路+Floyd+好题)
题意:给出n个点,两两之间均存在有向边。按顺序删除指定点及其所有连边,求每次删除点之前图中现存任意两点间距离和。思路:这题思路比较巧妙,先把删除的点的顺序逆序,即后删除的放前面存起来,然后倒着Floyd就行了。如果顶点编号大于等于中间点,那么就加起来,自己模拟一下还是很好理解的。#include<bits/stdc++.h>using namespace std;#def...原创 2018-09-11 07:06:54 · 322 阅读 · 0 评论 -
牛客练习赛27 水图(最短路)
题意:链接:https://www.nowcoder.com/acm/contest/188/C来源:牛客网 小w不会离散数学,所以她van的图论游戏是送分的小w有一张n个点n-1条边的无向联通图,每个点编号为1~n,每条边都有一个长度小w现在在点x上她想知道从点x出发经过每个点至少一次,最少需要走多少路思路:容易找出规律答案就是每条边的距离加起来乘以2减去最长的起点到其他点的...原创 2018-09-24 10:45:17 · 335 阅读 · 0 评论 -
UVA 11015(floyd水题)
题意:有一个班级的学生要一起写作业,所以他们要到一个统一的地点。现在给你他们各自的位置,问集合地点定在哪,能够让全部人走的总路径长度最小。思路:直接floyd,然后枚举每个位置的路程和,找最小。#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define ll long long...原创 2018-09-10 23:20:54 · 111 阅读 · 0 评论 -
【模板】最短路之floyd
具体学习参考https://www.cnblogs.com/ECJTUACM-873284962/p/6995648.html#include<bits/stdc++.h>using namespace std;int main(){ int e[10][10],k,i,j,n,m,t1,t2,t3; int inf=99999999; //用inf(inf...原创 2018-09-10 22:50:26 · 123 阅读 · 0 评论 -
【模板】最短路之SPFA
具体学习参考https://blog.csdn.net/qq_35644234/article/details/61614581主要用于负权(无负权环)的最短路。/** 单源最短路 SPFA* 时间复杂度 0(kE)* 这个是队列实现,有时候改成栈实现会更加快,很容易修改* 这个复杂度是不定的*/#include<bits/stdc++.h>using name...原创 2018-09-10 21:30:25 · 167 阅读 · 0 评论 -
POJ 1511(最短路+Dijkstra or SPFA)
题意:给定节点数n,和边数m,边是单向边.问从1节点出发到2,3,...n 这些节点路程和从从这些节点回来到节点1的路程和最小值。思路:先从1Dijkstra算出dis1,再把边反向,还是从1Dijkstra算出dis2,两个加起来就是答案。Dijkstra版#include<cstdio>#include<cstring>#include<...原创 2018-09-10 21:15:00 · 162 阅读 · 0 评论 -
POJ 2253(变形的最短路)
题意:湖中有n块石头,编号从1到n,有两只青蛙,Bob在1号石头上,Alice在2号石头上,Bob想去看望Alice,但由于水很脏,他想避免游泳,于是跳着去找她。但是Alice的石头超出了他的跳跃范围。因此,Bob使用其他石头作为中间站,通过一系列的小跳跃到达她。两块石头之间的青蛙距离被定义为两块石头之间所有可能路径上的最小必要跳跃距离,某条路径的必要跳跃距离即这条路径中单次跳跃的最远跳跃距离。你...原创 2018-09-10 19:33:02 · 214 阅读 · 0 评论 -
HDU 5521 Meeting(最短路+Dijkstra)(2015沈阳现场赛)
题意:有n个点,m个关系;对于每个关系,输入t,s,接着输入s个数,表示这s个数俩俩之间有边且权值都为t。两个人分别从同时1,n出发,问两人相遇所耗的最短距离,相遇只能在结点上相遇,且若两人走到距离不同则取最大的。求出所有符合条件相遇时的结点,若没有,则输出Evil John,若有多个,则按字典序最小输出所有可行结点。思路:此题难点主要是建图,建好图从1和n点Dijkstra,再枚举每个点,找...原创 2018-09-06 21:05:36 · 163 阅读 · 0 评论 -
POJ 1502(最短路+Dijkstra)
题意:给定一个下三角矩阵,询问从1开始到其他点的最短路径中,最长的那个是多少思路:先Dijkstra求出最短路,再在最短路找出最长路,水题。。#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<string>#in...原创 2018-09-04 00:40:01 · 234 阅读 · 0 评论 -
POJ 1125(最短路+Dijkstra)
题意:众所周知,证券经纪人对于市场传闻十分敏感。现在你被雇佣去开发一种在经纪人之间传播虚假信息的模式,使得你的雇主在市场中获得特殊的战略优势。为了获得最大的效果,你必须在尽可能快的时间内传播谣言。不幸的是,证券经纪人只信赖来自他们认为是“可靠来源”的消息。这意味着你必须在开始传播流言时考虑他们之间的关系。当流言开始传播时,某个经纪人需要一定的时间将其传递给他的所有同事。你的任务是编写一...原创 2018-09-04 00:13:04 · 338 阅读 · 0 评论 -
POJ1062(最短路+Dijkstra+限制)
年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿不出这么多金币,便请求酋长降低要求。酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币。如果你能够弄来他的水晶球,那么只要5000金币就行了。"探险家就跑到大祭司那里,向他要求皮袄或水晶球,大祭司要他用金币来换,或者替他弄来其他的东西,...原创 2018-09-03 20:33:31 · 250 阅读 · 0 评论 -
UVA 10048(Floyd变形)
题意:从a点到b点, 找到一条路径,使得这条路径上的所有噪音中最大的值是所有路径中最小的, 这个噪音值便是要求的。思路:Floyd改改就好,核心句改成取两个边的最大值,再更新取到最小的g[i][j]。#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define ll long l...原创 2018-09-11 14:37:40 · 149 阅读 · 0 评论 -
POJ 3159 Candies(差分约束)
题意:给n个人派糖果,给出m组数据,每组数据包含A,B,c 三个数, 意思是A的糖果数比B少的个数不多于c,即B的糖果数 - A的糖果数<= c 。 最后求n 比 1 最多多多少糖果。思路:典型的差分约束问题,因为是求最多,所以找最短路,这里加边时如果按INPUT顺序那么不等式就是2-1<=5,1-2<=4,所以就是找1到n的最短路。此题还有一个坑点就是邻接表+堆优化的di...原创 2018-11-24 19:02:44 · 185 阅读 · 0 评论