Pagini recente » Cod sursa (job #408673) | Cod sursa (job #2076508) | Cod sursa (job #424503) | Cod sursa (job #1999294) | Cod sursa (job #1130216)
#include<stdio.h>
FILE *in,*out;
//constante
const int Nmax=101;
const int oo=(1<<30)-1;
//variabile
int n;
int cost[Nmax][Nmax];
int main(void)
{
in=fopen("royfloyd.in","rt");
out=fopen("royfloyd.out","wt");
fscanf(in,"%d",&n);
for(int i=1 ; i<=n ; ++i)
{
for(int j=1 ; j<=n ; ++j)
{
fscanf(in,"%d",&cost[i][j]);
if(!cost[i][j] && i!=j)
cost[i][j]=oo;
}
}
for(int k=1 ; k<=n ; ++k)
{
for(int i=1 ; i<=n ; ++i)
{
if(k == i)
continue;
for(int j=1 ; j<=n ; ++j)
{
if(k == j)
continue;
if(i == j)
continue;
if(cost[i][j] > cost[i][k] + cost[k][j])
cost[i][j] = cost[i][k] + cost[k][j];
}
}
}
for(int i=1 ; i<=n ; ++i)
{
for(int j=1 ; j<=n ; ++j)
{
if(cost[i][j]==oo)
fprintf(out,"0");
else
fprintf(out,"%d ",cost[i][j]);
}
fprintf(out,"\n");
}
fclose(in);
fclose(out);
return 0;
}