Cod sursa(job #332482)

Utilizator Programmer01Mierla Laurentiu Marian Programmer01 Data 18 iulie 2009 01:10:58
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<stdio.h>

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

void royFloyd(){

	for(k=0; k<n; k++)
		for(i=0; i<n; i++)
			for(j=0; j<n; j++)
				if(i!=k && j!=k && i!=j && a[i][k] && a[k][j] && (!a[i][j] || a[i][j] > a[i][k] + a[k][j]))
					a[i][j] = a[i][k] + a[k][j]; 
}

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

	fscanf(ifile, "%i\n", &n);

	for(i=0; i<n; i++)
		for(j=0; j<n; j++)
			fscanf(ifile, "%i ", &a[i][j]);

	fclose(ifile);	


	royFloyd();

	ofile = fopen("royfloyd.out", "w");
	
	for(i=0; i<n; i++){
		for(j=0; j<n; j++)
			fprintf(ofile,"%i ", a[i][j]);
		fprintf(ofile,"\n");
	}
	
	fclose(ofile);

	return 0;
}