Cod sursa(job #1182838)

Utilizator cristian.enciuCristian Enciu cristian.enciu Data 7 mai 2014 21:24:59
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>

int main()
{
	int n, i, j, k, a[105][105];
	FILE *in, *out;

	in = fopen("royfloyd.in", "r");
	out = fopen("royfloyd.out", "w");

	fscanf(in, "%d", &n);
	for(i = 0 ; i < n ; ++i){
		for(j = 0 ; j < n ; ++j){
			fscanf(in, "%d", &a[i][j]);
		}
	}

	for(k = 0 ; k < n ; ++k){
		for(i = 0 ; i < n ; ++i){
			for(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(i = 0 ; i < n ; ++i){
		for(j = 0 ; j < n ; ++j){
			fprintf(out, "%d ", a[i][j]);
		}
		fprintf(out, "\n");
	}

	fclose(in);
	fclose(out);

	return 0;
}