Cod sursa(job #707946)

Utilizator andrici_cezarAndrici Cezar andrici_cezar Data 6 martie 2012 09:38:17
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <cstdio>
#define maxn 101

long i, j, k, a[maxn][maxn], N;

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