Cod sursa(job #149431)

Utilizator radamiRadu Patulescu radami Data 5 martie 2008 18:33:01
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>

int mat[110][110],n;

int min (int a,int b)
{
	if (a < b)
		return a;
	return b;
	
}

int main ()
{
	freopen("royfloyd.in","r",stdin);
	freopen("royfloyd.out","w",stdout);
	
	scanf("%d",&n);
	for (int i = 1;i <= n; i++)
		for (int j = 1;j <= n; j++)
			scanf("%d",&mat[i][j]);
	
	for (int k = 1;k <= n; k++)
		for (int i = 1;i <= n; i++)
			for (int j = 1;j <= n; j++)
                if (mat[i][k] && mat[k][j] && (mat[i][j] > mat[i][k] + mat[k][j] || !mat[i][j]) && i != j) mat[i][j] = mat[i][k] + mat[k][j];  
	
	for (int i = 1;i <= n; i++)
		{
			for (int j = 1;j <= n; j++)
				printf("%d ",mat[i][j]);
			printf("\n");
		}
			
	return 0;
}