Pagini recente » Cod sursa (job #698027) | Cod sursa (job #2575434) | Cod sursa (job #2408247) | Cod sursa (job #2590260) | Cod sursa (job #695759)
Cod sursa(job #695759)
#include <stdio.h>
FILE * fin;
FILE * fout;
long cost[101][101];
long n;
//-----------------------------------
void citire()
{
fin = fopen("royfloyd.in","r");
fout = fopen("royfloyd.out","w");
fscanf(fin,"%d",&n);
for (int i = 1; i<=n; i++)
{
for (int j = 1 ; j<=n ; j++)
{
fscanf(fin,"%d",&cost[i][j]);
}
}
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 ((cost[i][k]!=0)&&(cost[k][j]!=0)&&((cost[i][j]>cost[i][k]+cost[k][j])||(cost[i][j]==0)))
//if ((cost[i][j]>cost[i][k]+cost[k][j]))
{
cost[i][j]=cost[i][k]+cost[k][j];
}
}
}
}
}
//-----------------------------------
void afisare()
{
int i,j;
for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++)
{
if (i==j) cost[i][i]=0;
fprintf(fout,"%d ",cost[i][j]);
}
fprintf(fout,"\n");
}
}
//-----------------------------------
int main()
{
citire();
roy_floyd();
afisare();
fclose(fout);
return 0;
}