模板floyed


// 顶点从1 开始 floyed
void floyed()
{
int i,j,k;
for(k=1;k<=n;k++)
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(g[i][j]>g[i][k]+g[k][j])
g[i][j]=g[i][k]+g[k][j] ;
}
}

// 顶点从0 开始 floyed
void floyed()
{
int i,j,k;
for(k=0;k<n;k++)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(a[i][j]>a[i][k]+a[k][j])
a[i][j]=a[i][k]+a[k][j] ;
}
}

模板floyed,布布扣,bubuko.com

时间: 2024-10-01 07:28:09

模板floyed的相关文章

[ACM] 最短路算法整理(bellman_ford , SPFA , floyed , dijkstra 思想,步骤及模板)

以杭电2544题目为例 最短路 Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗? Input 输入包括多组数据.每组数据第一行是两个整数N.M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路.N=M=0

模板 图的遍历 bfs+dfs 图的最短路径 Floyed+Dijkstra

广搜 bfs 1 //bfs 2 3 #include<iostream> 4 #include<cstdio> 5 using namespace std; 6 int queue[1001],top=0,end=1; 7 int map[1001][1001]; 8 int vis[1001]; 9 int n,m; 10 void bfs(int p) 11 { 12 queue[end]=p; 13 vis[p]=1; 14 printf("%c -->&q

多源最短路Floyed——多源最短路(CODEVS1077)(可能Floyed模板)

题目描述 Description 已知n个点(n<=100),给你n*n的方阵,a[i,j]表示从第i个点到第j个点的直接距离. 现在有Q个询问,每个询问两个正整数,a和b,让你求a到b之间的最短路程. 满足a[i,j]=a[j,i]; 输入描述 Input Description 第一行一个正整数n,接下来n行每行n个正整数,满足a[i,i]=0,再一行一个Q,接下来Q行,每行两个正整数a和b. 输出描述 Output Description 一共Q行,每行一个整数. 样例输入 Sample

hdu 1863 [【最小生成树】+hdu2544【floyed】+hdu1874【dijdtra】~~~模板复习~~~

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1863 #include<stdio.h> #include<string.h> #define inf 0x3f3f3f3f #define N 120 int book[N],w[N][N],min,dis[N]; int main() {     int m,n,i,j,t1,t2,t3,s,e,u,flag,sum;     while(scanf("%d%d"

[图论] 最短路径(Bellman-Ford , SPFA , Floyed , Dijkstra)

注:模板以hdu 2544 为例 Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗? Input 输入包括多组数据.每组数据第一行是两个整数N.M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路.N=M=

算法总结——Floyed

Floyed: 复杂度:O(n^3) 用途:求一条路走完所有的地方的的最小值,很简单,就三个for,一般写floyed不谢bellman_ford~~~ 适用条件:遍历所有的点,适合于稠密图,floyed与bellman_ford算法之间的区别就是floyed计算了从每一点开始的值,最后只要选取就行,方便写,但是复杂度高了 原理:利用邻接矩阵判断,而bellman_ford是利用一个数组d进行判断(其实应该可以相互转换把- -||) 步骤:1.把所有的边赋值无穷大,能通过的赋值 2. 三个for

【模板】图论

一.生成树 洛谷模板最小生成树[跑的还算快的 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define N 5020 #define M 200008 using namespace std; int n,m,ans; int tot; int fa[N]; struct E{ int x,y,z; }e[M]; bool cmp(E a,E b){ r

floyed算法的一些感想

虽然我还在学动态规划,但这并不影响我去试图研究floyed,在对floyed算法进行研究了40min后,我感觉我似乎应该好像是勉强理解了floyed算法 for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=k;j++) if(f[i][k]+f[k][j]<f[i][j]) f[i][j]=f[i][k]+f[k][j]; 以上为floyed的基础模板.Floyed算法,用来计算这个图上任意点对间的距离,3重循环,简

最短路算法(floyed+Dijkstra+bellman-ford+SPFA)

最短路算法简单模板 一.floyed算法 首先对于floyed算法来说就是最短路径的动态规划解法,时间复杂度为O(n^3) 适用于图中所有点与点之间的最短路径的算法,一般适用于点n较小的情况. Floyed算法有三层循环,循环的层次先后顺序也是比较重要的,分别为k ,i,j:因为dis[k][i][j]代表的是i节点到j节点的最短路如果中间经过节点k的话dis[k][i][j] =dis[k-1][i][k]+dis[k-1][k][j]:否则dis[k][i][j] = dis[k-1][i]