Cod sursa(job #675880)

Utilizator DaninetDani Biro Daninet Data 8 februarie 2012 13:33:44
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<cstdio>

FILE *f = fopen("royfloyd.in", "r");
FILE *g = fopen("royfloyd.out", "w");

int a[101][101];
int n;

int main() {
	fscanf(f, "%d", &n);
	for(int i = 1; i<=n; i++)
		for(int j = 1; j<=n; j++) 
			fscanf(f,"%d", &a[i][j]);
	for(int k = 1; k<=n; k++) 
		for(int i = 1; i<=n; i++)
			for(int j = 1; j<=n; j++) 

				if(i != j && 
				   a[i][k] &&  
				   a[k][j] &&
				   (a[i][j] > a[i][k] + a[k][j] || !a[i][j]))
					a[i][j] = a[i][k] + a[k][j];
					
	for(int i = 1; i<=n; i++) {
		for(int j = 1; j<=n; j++)
			fprintf(g,"%d ", a[i][j]);
		fprintf(g,"\n");
	}
	fclose(g);
}