转自:https://www.cnblogs.com/wangyuliang/p/9216365.html




1 for (i = 1; i <= n; i++)
2 {
3 for (j = 1; j <= n; j++)
4 {
5 if (e[i][j] > e[i][1] + e[1][j])
6 e[i][j] = e[i][1] + e[1][j];
7 }
8 }

1 //经过1号顶点 2 for(i=1;i<=n;i++) 3 for(j=1;j<=n;j++) 4 if (e[i][j] > e[i][1]+e[1][j]) e[i][j]=e[i][1]+e[1][j]; 5 //经过2号顶点 6 for(i=1;i<=n;i++) 7 for(j=1;j<=n;j++) 8 if (e[i][j] > e[i][2]+e[2][j]) e[i][j]=e[i][2]+e[2][j];



1 for(k=1;k<=n;k++) 2 for(i=1;i<=n;i++) 3 for(j=1;j<=n;j++) 4 if(e[i][j]>e[i][k]+e[k][j]) 5 e[i][j]=e[i][k]+e[k][j];
1 #include
2 int main()
3 {
4 int e[10][10],k,i,j,n,m,t1,t2,t3;
5 int inf=99999999; //用inf(infinity的缩写)存储一个我们认为的正无穷值
6 //读入n和m,n表示顶点个数,m表示边的条数
7 scanf("%d %d",&n,&m);
8 //初始化
9 for(i=1;i<=n;i++)
10 for(j=1;j<=n;j++)
11 if(i==j) e[i][j]=0;
12 else e[i][j]=inf;
13 //读入边
14 for(i=1;i<=m;i++)
15 {
16 scanf("%d %d %d",&t1,&t2,&t3);
17 e[t1][t2]=t3;
18 }
19 //Floyd-Warshall算法核心语句
20 for(k=1;k<=n;k++)
21 for(i=1;i<=n;i++)
22 for(j=1;j<=n;j++)
23 if(e[i][j]>e[i][k]+e[k][j] )
24 e[i][j]=e[i][k]+e[k][j];
25 //输出最终的结果
26 for(i=1;i<=n;i++)
27 {
28 for(j=1;j<=n;j++)
29 {
30 printf("%10d",e[i][j]);
31 }
32 printf("\n");
33 }
34 return 0;
35 }

原文:https://www.cnblogs.com/Ian-learning/p/12686292.html