Cod sursa(job #272227)

Utilizator varuvasiTofan Vasile varuvasi Data 6 martie 2009 17:38:47
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <stdio.h>

const int maxn = 101;

int r[maxn][maxn], c[maxn][maxn], n;

int main()
{
	int i=0,j=0,k=0;
	FILE *fin = fopen("royfloyd.in", "rt"), *fout = fopen("royfloyd.out", "wt");

	fscanf(fin, "%d", &n);
	for (i=1; i <= n; i++)
		for (j=1; j <= n; j++)
			fscanf(fin, "%d", &c[i][j]);

	for (i=1; i <= n; i++)
		for (j=1; j <= n; j++) r[i][j]=c[i][j];

	for (k=1; k<=n; k++)
		for (i=1; i <= n; i++)
			for (j=1; j <=n; j++)
				if (r[i][k] && r[k][j])
					if (r[i][j] > r[i][k] + r[k][j])
						r[i][j] = r[i][k] + r[k][j];
					
	for (i=1; i <= n; i++)
	{
		for (j=1; j <= n; j++)
			fprintf(fout, "%d ", r[i][j]);
		fprintf(fout, "\n");
	}

	fclose(fin), fclose(fout);

	return 0;
}