Cod sursa(job #505670)

Utilizator sunt_emoSunt emo sunt_emo Data 3 decembrie 2010 16:06:40
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.68 kb
#include <stdio.h>
#define inf 1000000000

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]);
			if (!a[i][j]) a[i][j]=inf;
		}
	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; j++) {
			if (a[i][j]==inf) a[i][j]=0;
			printf ("%ld ",a[i][j]);
		}
		printf ("\n");
	}				
	return 0;
}

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