Cod sursa(job #159841)

Utilizator nimeniaPaul Grigoras nimenia Data 14 martie 2008 14:22:39
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <stdio.h>

long mcs[10][10];

long pinf=214748364,n,i,j,k,x,y,c;


int main()
{	freopen("royfloyd.in","r",stdin);
	freopen("royfloyd.out","w",stdout);

	scanf("%ld", &n);
	for(i=1;i<=n;i++)
		for (j=1;j<=n;j++)
		scanf("%ld",&mcs[i][j]);

	for(k=1;k<=n;k++){
		for(i=1;i<=n;i++)
			for(j=1;j<=n;j++)
				if (mcs[i][k] && mcs[k][j])
					if ((mcs[i][j]>mcs[i][k]+mcs[k][j] || ! mcs[i][j]) &&i!=j)
						mcs[i][j]=mcs[i][k]+mcs[k][j];

	}

	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++)
			if (mcs[i][j]==pinf) printf("0 ");
			else printf("%ld ",mcs[i][j]);
		printf("\n");
		}


	return 0;

}