https://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm
1 int map[101][101]; 2 int n,m; 3 void init() 4 { 5 scanf("%d%d",&n,&m); 6 for(int i=1;i<=n;i++) 7 { 8 for(int j=1;j<=n;j++) 9 { 10 map[i][j]=1000000000; 11 if(i==j) 12 { 13 map[i][j]=0; 14 } 15 } 16 } 17 for(int i=1;i<=m;i++) 18 { 19 int x,y,z; 20 scanf("%d%d%d",&x,&y,&z); 21 map[x][y]=z; 22 map[y][x]=z; 23 } 24 return; 25 } 26 void floyd() 27 { 28 for(int k=1;k<=n;k++) 29 { 30 for(int i=1;i<=n;i++) 31 { 32 for(int j=1;j<=n;j++) 33 { 34 map[i][j]=min(map[i][j],map[i][k]+map[k][j]); 35 } 36 } 37 } 38 return; 39 }