Pagini recente » Monitorul de evaluare | Cod sursa (job #1104687) | Cod sursa (job #2706634) | Cod sursa (job #171309) | Cod sursa (job #695728)
Cod sursa(job #695728)
#include <stdio.h>
FILE * fin;
FILE * fout;
int cost[101][101];
int 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[x][z]!=0)&&(cost[z][y]!=0) && (cost[x][y]>cost[x][z]+cost[z][y]))
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++)
{
fprintf(fout,"%d ",cost[i][j]);
}
fprintf(fout,"\n");
}
}
//-----------------------------------
int main()
{
citire();
roy_floyd();
afisare();
fclose(fout);
return 0;
}