Cod sursa(job #757173)

Utilizator igsifvevc avb igsi Data 11 iunie 2012 12:25:48
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>

int main(void)
{
	FILE *in = fopen("royfloyd.in", "r");
	FILE *out = fopen("royfloyd.out", "w");
	int n, i, j, k, drum[100][100];
	
	fscanf(in, "%d", &n);
	for(i = 0; i < n; i++)
		for(j = 0; j < n; j++)
			fscanf(in, "%d", &drum[i][j]);
	
	for(k = 0; k < n; k++)
		for(i = 0; i < n; i++)
			for(j = 0; j < n; j++)
				if(i != j && drum[i][k] && drum[k][j])
					if(drum[i][j])
						drum[i][j] = (drum[i][j] > drum[i][k] + drum[k][j] ? drum[i][k] + drum[k][j] : drum[i][j]);
					else
						drum[i][j] = drum[i][k] + drum[k][j];
	for(i = 0; i < n; i++)
	{
		for(j = 0; j < n; j++)
			fprintf(out, "%d ", drum[i][j]);
		fprintf(out, "\n");
	}
			
	fclose(in);
	fclose(out);
	return 0;
}