Cod sursa(job #1040902)

Utilizator razvan2006razvan brezulianu razvan2006 Data 25 noiembrie 2013 08:38:51
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<stdio.h>

long n, a[101][101];

int main() {
	freopen("royfloyd.in", "rt", stdin);
	freopen("royfloyd.out", "wt", stdout);
	
	scanf("%ld", &n);
	
	for(int i = 0; i < n; i++)
		for(int j = 0; j < n; j++)
			scanf("%ld", &a[i][j]);
		
	for(int k = 0; k < n; k++)
		for(int i = 0; i < n; i++)
			for(int j = 0; j < n; j++)
				if(a[i][k] && a[k][j] && (a[i][j] > a[i][k] + a[k][j] || !a[i][j]) && i != j)
					a[i][j] = a[i][k] + a[k][j];
				
	for(int i = 0; i < n; i++){
		for(int j = 0; j < n; j++)
			printf("%ld ", a[i][j]);
		printf("\n");
	}
	
	return 0;
}