Cod sursa(job #149237)

Utilizator crusRus Cristian crus Data 5 martie 2008 14:27:24
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator c Status done
Runda Arhiva educationala Marime 0.66 kb
#include <stdio.h>
#define input "royfloyd.in"
#define output "royfloyd.out"
#define nmax 101
int i,j,k,n,t[nmax][nmax];
void citire()
{
 FILE *fin=fopen(input,"r");
 fscanf(fin,"%d",&n);
 for (i=1;i<=n;i++)
      for (j=1;j<=n;j++)
	  fscanf(fin,"%d",&t[i][j]);
 fclose(fin);
}
void solve()
{
 for (k=1;k<=n;k++)
     for (i=1;i<=n;i++)
	 for (j=1;j<=n;j++)
	     if (i!=j)
		if (t[i][k]+t[k][j]<t[i][j]) t[i][j]=t[i][k]+t[k][j];
}
void afisare()
{
 freopen(output,"w",stdout);
 for (i=1;i<=n;i++)
     {
     for (j=1;j<=n;j++)
	 printf("%d ",t[i][j]);
     printf("\n");
     }
}
int main()
{
 citire();
 solve();
 afisare();
 return 0;
}