Cod sursa(job #390732)

Utilizator dexter_dexMutascu Adrian - Dragos dexter_dex Data 4 februarie 2010 14:00:03
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>
#define Nmax 105

int a[Nmax][Nmax];
int i, j, k, n;

int main () {
	
	FILE * f = fopen ("royfloyd.in", "r");
	FILE * g = fopen ("royfloyd.out", "w");
	
	fscanf (f, "%d", &n);
	for (i = 1 ; i <= n ; i++)
		for (j = 1 ; j <= n ; j++)
			fscanf (f, "%d", &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] && i != j && (a[i][j] > a[i][k] + a[k][j] || a[i][j] == 0 ) )
					a[i][j] = a[i][k] + a[k][j];
	
	for (i = 1 ; i <= n ; i++){
		for (j = 1 ; j <= n ; j++)
			fprintf (g, "%d ", a[i][j]);
		fprintf(g, "\n");
	}
	
	fclose(f);
	fclose(g);
	return 0;
}