![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Floyd算法
Keep_Trying_Go
无
展开
-
poj1603(Flody算法)
题意:题目确定只有20个国家,之间存在边界的话,距离设置为1。前面的19行,首先第i(1-19)行给出一个x,代表x后面跟的国家数,表示第i行和后面的国家之间存在边界,设置为1.第20行给出表示可能征服的起始国和结束国(也就是国家A和国家B之间的最短距离)。使用Flody算法:核心算法: for(int k=1;k<=20;k++){ for(int i=1;i<=20;i++){ for(int j=1;j<=20;j++){ e[i][j]=min(e[i][k原创 2021-09-15 19:35:59 · 147 阅读 · 0 评论 -
poj2139(Flody算法)
题意:题目给出n,m。n代表母牛的数量,m代表接下来的行数。接下来的m行,首先给出一个x,表示x后面跟的数,也就是母牛的编号(这里从1开始,当然从0开始也一样),表示这x头母牛之间存在关系,每一个关系之间为1,当然不包括自己(也就是temp[t]==temp[j]),代表自己和自己)。最后就是使用Flody算法求解。Flody算法的核心:for(int k=1;k<=n;k++){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){原创 2021-09-15 18:59:57 · 228 阅读 · 0 评论 -
poj2387(SPFA算法)
1.建⽴⼀个队列,初始时队列⾥只有起始点,再建⽴⼀个表格记录起始点到所有点的最短路径(该表格的初始值要赋为极⼤值,该点到他本⾝的路径赋为 无穷大)。然后执⾏松弛操作,⽤队列⾥有的点作为起始点去刷新到所有点的最短路,如果刷新成功且被刷新点不在队列中则把该点加⼊到队列最后。重复执⾏直到队列为空。方法一:SPFA算法#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#原创 2021-04-11 08:39:50 · 292 阅读 · 0 评论 -
HDU2544(Bellman-ford算法和Floyd算法)
思路:1.初始化时将起点 s 到各个顶点 v 的距离 dist(s->v) 赋值为 ∞,dist(s->s) 赋值为 0;2.后续进⾏最多 n-1 次遍历操作 (n 为顶点个数), 对所有的边进⾏松弛操作;所谓的松弛,以边 ab 为例,若 dist(a) 代表起点 s 到达 a 点所需要花费的总数,dist(b) 代表起点 s 到达 b 点所需要花费的总数,weight(ab)代表边 ab 权重,若存在: dist(a) +weight(ab) < dist(b)则说明存在到 b原创 2021-04-10 13:08:30 · 229 阅读 · 0 评论 -
poj2240(Bellman-ford)
思路:如果u->v不存在环,则最多进行n-1次松弛操作,但是如果存在环的话,那么在进行第n次的松弛操作存在更优路径,所以这道题只要判断出有环,那么就存在套利可行(Bellman-ford也可以求解含负权图的单源最短路径)这道题要注意套利的公式计算:题目中:0.5*10.0*0.21=1.05方法一:Bellman-ford()算法#include<iostream>#include<algorithm>#include<cstring>#include&原创 2021-04-10 10:17:08 · 187 阅读 · 0 评论 -
HDU1217(Bellman-ford和Floyd两种算法)
思路:如果u->v不存在环,则最多进行n-1次松弛操作,但是如果存在环的话,那么在进行第n次的松弛操作存在更优路径,所以这道题只要判断出有环,那么就存在套利可行(Bellman-ford也可以求解含负权图的单源最短路径)这道题要注意套利的公式计算:题目中:0.5*10.0*0.21=1.05方法一:Bellman-ford()算法#include<iostream>#include<algorithm>#include<cstring>#include&原创 2021-04-10 12:37:26 · 162 阅读 · 0 评论 -
HDU1874(Floyd)
#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include<iomanip>using namespace std;const int maxx=105;const int inf=0x3f3f3f3f;struct node{ int x,y;}num[maxx];int e[maxx][maxx];int n,m;void原创 2021-04-10 10:49:19 · 94 阅读 · 0 评论 -
HDU2112(Flody算法和Dijstra算法)
采用Flody算法时一定要注意那个cnt的下标,我也是在这里卡了一定的时间,可能是我的经验还远远不够。方法一:#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<vector>#include<set>#include<queue>#include<map>using namespace s原创 2021-03-18 07:10:28 · 196 阅读 · 0 评论 -
HDU1869(Flody算法)
#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<map>using namespace std;const int inf=0x3f3f3f3f;const int maxx=1005;int e[maxx][maxx];int vis[maxx];int n,m;void Flody(){ for(int k=0;k原创 2021-03-18 07:10:19 · 131 阅读 · 0 评论