Cod sursa(job #505666)

Utilizator sunt_emoSunt emo sunt_emo Data 3 decembrie 2010 15:56:59
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator c Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>

long min (long,long);

int main () {
	long N,a[110][110],i,j,k;
	freopen ("royfloyd.in","r",stdin);
	freopen ("royfloyd.out","w",stdout);
	scanf ("%ld",&N);
	for (i=0; i<N; i++)
		for (j=0; j<N; j++)
			scanf ("%ld",&a[i][j]);
	for (k=0; k<N; k++)
		for (i=0; i<N; i++)
			for (j=0; j<N; j++)
				if ((k!=j)&&(k!=i)&&(i!=j))
					a[i][j]=min (a[i][j],a[i][k]+a[k][j]);
	for (i=0; i<N; i++) {
		for (j=0; j<N-1; j++) printf ("%ld ",a[i][j]);
		printf ("%ld\n",a[i][N-1]);
	}				
	return 0;
}

long min (long a,long b) {
	if (a)	if (b)	if (a<b) return a;
					else return b;
			else return a;
	else	if (b)	return b;
			else return 0;
}