#include <stdio.h>intMain () {intinf=9999999;//Syllable Division: the Infinite Infinite intmap[ -][ -]; intn,m; scanf ("%d%d",&n,&M); inti,j; intK; for(i=1; i<=n;i++) for(j=1; j<=n;j++){ if(i==j) Map[i][j]=0; ElseMap[i][j]=INF; } intm; for(k=1; k<=m;k++) {scanf ("%d%d%d",&i,&j,&m); MAP[I][J]=m; }//The following is the legendary "only five-way algorithm"--floyd-warshall//**************************************************** for(k=1; k<=n;k++) for(i=1; i<=n;i++) for(j=1; j<=n;j++) if(map[i][k]<inf&&map[k][j]<inf&&map[i][j]>map[i][k]+Map[k][j])//Find i-->j Minimum distancemap[i][j]=map[i][k]+Map[k][j];//****************************************************//The following is the legendary "only five-way algorithm"--floyd-warshall for(i=1; i<=n;i++) for(j=1; j<=n;j++) printf ("%d-->%d:%d\n", I,j,map[i][j]); return 0;}
Only the five elements of the algorithm "Foloyd-warshall algorithm (multiple shortest path problem)