Cod sursa(job #149246)

Utilizator crusRus Cristian crus Data 5 martie 2008 14:35:00
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator c Status done
Runda Arhiva educationala Marime 0.68 kb
#include <stdio.h>
#define input "royfloyd.in"
#define output "royfloyd.out"
#define nmax 105
long i,j,k,n,t[nmax][nmax];
void citire()
{
 freopen(input,"r",stdin);
 scanf("%ld",&n);
 for (i=1;i<=n;i++)
      for (j=1;j<=n;j++)
	  scanf("%ld",&t[i][j]);
}
void solve()
{
 for (k=1;k<=n;k++)
     for (i=1;i<=n;i++)
	 for (j=1;j<=n;j++)
	     if ((i!=j && t[i][k] && t[k][j])||(!t[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("%ld ",t[i][j]);
     printf("\n");
     }
}
int main()
{
 citire();
 solve();
 afisare();
 return 0;
}