Cod sursa(job #561312)

Utilizator devill_08Buli.vlad devill_08 Data 19 martie 2011 19:09:44
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <stdio.h>

int c[102][102],n,i,j,k;

void citire ()
{
	freopen("royfloyd.in","r",stdin);
	freopen("royfloyd.out","w",stdout);
	scanf("%d", &n);
	for(i=1;i<=n;++i) 
		for(j=1;j<=n;++j) 
		scanf("%d", &c[i][j]);
}
void royfloyd ()
{
	for(k=1;k<=n;++k)
	for(i=1;i<=n;++i)
		for(j=1;j<=n;++j)
			if (c[i][k] && c[k][j])
				if((c[i][j] > c[i][k] + c[k][j] || !c[i][j]) && i!=j) c[i][j]=c[i][k]+c[k][j];
}

void afis ()
{
	for(i=1;i<=n;++i)
	{
		for(j=1;j<=n;++j) printf("%d ", c[i][j]);
		printf("\n");
	}
}

int main ()
{
	citire ();
	royfloyd ();
	afis ();
	return 0;
}