Cod sursa(job #534716)

Utilizator unudoitreiRusu Alexandru unudoitrei Data 16 februarie 2011 08:19:30
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<fstream>
using namespace std;
FILE *f, *g;
int a[101][101], i, j, n, k;
int main()
{
	f=fopen("royfloyd.in", "r");
	g=fopen("royfloyd.out","w");
	fscanf(f, "%d", &n);
	for(i=1; i<=n; i++)
		for(j=1; j<=n; j++)
			fscanf(f, "%d", &a[i][j]);
	
	for(k=1; k<=n; k++)
		for(i=1; i<=n; i++)
			for(j=1; j<=n; j++)
				if(i!=j)
					if(a[i][k]!=0 && a[k][j]!=0)
						if(a[i][k]+a[k][j]<a[i][j] || a[i][j]==0)
							a[i][j]=a[i][k]+a[k][j];

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

	return 0;
}