Cod sursa(job #148733)

Utilizator c_sebiSebastian Crisan c_sebi Data 4 martie 2008 19:36:24
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <stdio.h>

int n, a[100][100];

void royfloyd(){
	int i, j, k;
	for(k=0; k<n; k++)
		for(i=0; i<n; i++)
			for(j=0; j<n; j++)
			  if(i!=j && a[i][k] && a[k][j])
				if(a[i][k] + a[k][j] < a[i][j] || !a[i][j])
					a[i][j] = a[i][k] + a[k][j];
}


int main(){
	int i, j;
	FILE *f=fopen("royfloyd.in", "r");
	FILE *g=fopen("royfloyd.out", "w");
	fscanf(f, "%d", &n);
	for(i=0; i<n; i++)
		for(j=0; j<n; j++)
			fscanf(f, "%d", &a[i][j]);
	royfloyd();
	for(i=0; i<n; i++) {
		for(j=0; j<n; j++)
			fprintf(g, "%d ", a[i][j]);
		fprintf(g, "\n");
	}
	fclose(f);
	fclose(g);
	return 0;
}