Cod sursa(job #164675)

Utilizator alle_forever13Alexandra Retegan alle_forever13 Data 24 martie 2008 17:48:51
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<stdio.h>

#define input "royfloyd.in"
#define output "royfloyd.out"

#define dim 101

void rf();

int n, a[dim][dim];

int main()
{
	FILE *in, *out;

	in = fopen (input, "r");
	out = fopen (output, "w");

	int i, j;

	fscanf(in, "%d", &n);

	for(i=1; i<=n; i++)

		for(j=1; j<=n; j++)

			fscanf(in, "%d", &a[i][j]);

	rf();

	for(i=1; i<=n; i++)
	{
		for(j=1; j<=n; j++)

			fprintf(out, "%d ", a[i][j]);

		fprintf(out, "\n");

	}

	return 0;

}

void rf()
{
	int i, j, k;

	for(k=1; k<=n; k++)

		for(i=1; i<=n; i++)

			for(j=1; j<=n; j++)

				if((i!=k) && (j!=k) && (i!=j) && (a[i][k]!=0) && (a[k][j]!=0))

					if(a[i][k]+a[k][j]<a[i][j])

						a[i][j] = a[i][k]+a[k][j];

}