Pagini recente » Cod sursa (job #1116034) | Cod sursa (job #1769801) | Cod sursa (job #2564680) | Cod sursa (job #936671) | Cod sursa (job #1838164)
#include<cstdio>
#define NMAX 101
const int INF = 0x3f3f3f3f;
using namespace std;
int C[NMAX][NMAX], n;
void Read()
{
FILE *fin = fopen("royfloyd.in","r");
fscanf(fin,"%d",&n);
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
{
fscanf(fin,"%d",&C[i][j]);
if(!C[i][j])
C[i][j] = INF;
}
fclose(fin);
}
void roy_floyd()
{
int k, i, j;
for(k=1; k<=n; k++)
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
if(C[i][k] != INF && C[k][j] != INF && i != j && C[i][j] > C[i][k] + C[k][j])
C[i][j] = C[i][k] + C[k][j];
}
void Write()
{
FILE *fout = fopen("royfloyd.out","w");
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
if(C[i][j] == INF)
fprintf(fout,"0 ");
else fprintf(fout,"%d ",C[i][j]);
fprintf(fout,"\n");
}
fclose(fout);
}
int main()
{
Read();
roy_floyd();
Write();
return 0;
}