#include <iostream> #include <cstring> using namespace std; #define INF 100000 #define MAX 100 int map[MAX][MAX]; int main() { int n,i,j,k; cin>>n; memset(map,0,sizeof(map)); for(i=0;i<n;i++) for(j=0;j<n;j++) { cin>>map[i][j]; if(i!=j&&!map[i][j]) map[i][j]=INF; } for(k=0;k<n;k++) for(i=0;i<n;i++) for(j=0;j<n;j++) if(map[i][j]>map[i][k]+map[k][j]) //map[i][k]!=0&&map[k][j]&& map[i][j]=map[i][k]+map[k][j]; for(i=0;i<n;i++) { for(j=0;j<n-1;j++) if(map[i][j]==INF) cout<<"-1"<<" "; else cout<<map[i][j]<<" "; if(map[i][j]==INF) cout<<"-1"<<" "; else cout<<map[i][j]<<" "; cout<<'\n'; } return 0; } /************************************************************** Problem: 2166 User: admin Language: C++ Result: Accepted Time:4 ms Memory:2112 kb ****************************************************************/