Cod sursa(job #250317)

Utilizator willliIonel Bratianu willli Data 30 ianuarie 2009 17:18:14
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator c Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int a[MAX][MAX], n, rez[MAX][MAX];
void roy_floyd()
{
	int i, j, k;
	
	for (k = 0; k < n; k++)
		for (i = 0; i < n; i++)
			for (j = 0; j < n; j++)
				if (rez[i][j] > rez[i][k] + rez[k][j] )		
				{
					rez[i][j] = rez[i][k] + rez[k][j];
				}

}

int main()
{
	int i, j;
	FILE *fin, *fout;
	
	if ((fin = fopen("royfloyd.in", "r")) == NULL)
	{
		printf("Eroare \n");
		exit(-1);
	}
	//read dimension of vectors
	fscanf(fin, "%d", &n);

	//read the vectors
	for (i = 0; i<n ; i++)
		for (j = 0; j < n; j++)
		{
			fscanf(fin, "%d", &a[i][j]);
			rez[i][j] = a[i][j];
		}
	fclose(fin);
	
	roy_floyd();

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