Pagini recente » Cod sursa (job #705101) | Cod sursa (job #2409094) | Cod sursa (job #1129806) | Cod sursa (job #1558455) | Cod sursa (job #1706212)
#include <cstdio>
#define MAXN 100
#define INF 1000000000
int cost[MAXN+1][MAXN+1],d[MAXN+1][MAXN+1][2];
inline int getmin(int a,int b){
if(a<b) return a;
return b;
}
int main(){
FILE*fi,*fout;
int i,j,n,k;
fi=fopen("royfloyd.in" ,"r");
fout=fopen("royfloyd.out" ,"w");
fscanf(fi,"%d" ,&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
fscanf(fi,"%d" ,&cost[i][j]);
if(cost[i][j]==0)
cost[i][j]=INF;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
d[i][j][0]=cost[i][j];
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i!=j)
d[i][j][k&1]=getmin(d[i][j][1-k&1],d[i][k][1-k&1]+d[k][j][1-k&1]);
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(d[i][j][n&1]>=INF)
fprintf(fout,"0 ");
else
fprintf(fout,"%d " ,d[i][j][n&1]);
}
fprintf(fout,"\n");
}
fclose(fi);
fclose(fout);
return 0;
}