#include<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> #include<cmath> #include<iostream> #define inf 0x3f3f3f3f #define maxn 100006 using namespace std; typedef long long ll; int cost[6][6]={ 0,6,inf,8,inf,inf, 18,0,7,inf,inf,10, 9,inf,0,15,inf,inf, inf,inf,12,0,inf,inf, inf,inf,4,inf,0,inf, 24,5,inf,25,inf,0, }; int path[maxn][maxn]; int n=6; int main(){ for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ //path[i][j]=(i==j)?-1:i; path[i][j]=i; } } for(int k=0;k<n;k++){ for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(cost[i][k]+cost[k][j]<cost[i][j]){ cost[i][j]=cost[i][k]+cost[k][j]; path[i][j]=path[k][j]; } } } } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(cost[i][j]==inf) printf("inf "); else printf("%d ",cost[i][j]); } printf("\n"); } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ printf("%d ",path[i][j]); } printf("\n"); } printf("%d\n",cost[0][2]); int pre=5; while(pre!=0){ printf("%d ",pre); pre=path[0][pre]; } printf("%d\n",0); return 0; }