Cod sursa(job #1585438)

Utilizator andreibotilaBotila Andrei andreibotila Data 30 ianuarie 2016 23:57:02
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdio.h>

int main(){
	FILE *in, *out;
	in = fopen("royfloyd.in", "r");
	out = fopen("royfloyd.out", "w");

	int n, i, j, k;
	fscanf(in, "%d", &n);
	int matrPond[102][102];

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

	for(k = 1; k <= n; k++){
		for(i = 1; i <= n; i++){
			for(j = 1; j <= n; j++){
				if(matrPond[i][k] && matrPond[k][j] && 
					(matrPond[i][j] > matrPond[i][k] + matrPond[k][j] || !matrPond[i][j]) 
					&& i != j)
					matrPond[i][j] = matrPond[i][k] + matrPond[k][j];
			}
		}
	}

	for(i = 1; i <= n; i++){
		for(j = 1; j <= n; j++){
			fprintf(out, "%d ", matrPond[i][j]);
		}
		fprintf(out, "\n");
	}

	fclose(in);
	fclose(out);
	return 0;
}