Cod sursa(job #597217)

Utilizator Brz_VladBrezae Vlad Brz_Vlad Data 21 iunie 2011 14:19:07
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <stdio.h>

int main(int argc, char* argv[])
{
	int MCost[100][100];
	int n;
	int i,j,k;

	FILE *fpr,*fpw;
	fpr = fopen("royfloyd.in","r");
	fpw = fopen("royfloyd.out","w");

	fscanf(fpr,"%d",&n);
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			fscanf(fpr,"%d",&MCost[i][j]);

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

	for(i=0;i<n;i++){	
		for(j=0;j<n;j++)
			fprintf(fpw,"%d ",MCost[i][j]);
		fprintf(fpw,"\n");
	}

	fclose(fpr);
	fclose(fpw);
	return 0;
}