Cod sursa(job #181993)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 20 aprilie 2008 10:06:08
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>
#define N 266
int n,b[N][N],a[N][N];
int main()
{
	freopen("rf.in", "r",stdin);
	freopen("rf.out", "w",stdout);
	scanf("%d", &n);
	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
		{	
			scanf("%d", &a[i][j]);
			if(i!=j) b[i][j]=1;
		}	
	for(int k=1;k<=n;++k)
		for(int i=1;i<=n;++i)
			for(int j=1;j<=n;++j)
				if (i!=k && k!=j &&i!=j)  
					if (a[i][j]>a[i][k]+a[k][j] || (a[i][j]==a[i][k]+a[k][j] && b[i][j]<b[i][k]+b[k][j]) )
					{
						a[i][j]=a[i][k]+a[k][j];
						b[i][j]=b[i][k]+b[k][j];
					}
	for(int i=1;i<=n;++i,printf("\n")) {
		for(int j=1;j<=n;++j)
			printf("%d ",a[i][j]);
		}
	for(int i=1;i<=n;++i,printf("\n")) {
		for(int j=1;j<=n;++j)
			printf("%d ",b[i][j]);
		}
	return 0;
}