Pagini recente » Cod sursa (job #3003920) | Cod sursa (job #2585735) | Borderou de evaluare (job #1001489) | Cod sursa (job #1992704) | Cod sursa (job #2513709)
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 105;
const int INF = 2e9;
int a[NMAX][NMAX]; //mat adiacenta
int d[NMAX][NMAX]; //mat distante
int main(){
freopen("royfloyd.in","r",stdin);
freopen("royfloyd.out","w",stdout);
int n;
scanf("%d",&n);
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j){
scanf("%d",&a[i][j]);
if(a[i][j]==0)
d[i][j]=INF;
else
d[i][j]=a[i][j];
}
for(int k=1;k<=n;++k)
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j){
if(i!=j)
d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
}
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j)
if(d[i][j]==INF)
printf("0 ");
else
printf("%d ",d[i][j]);
printf("\n");
}
return 0;
}