Cod sursa(job #712964)

Utilizator halianStefanca Stefan halian Data 13 martie 2012 22:56:25
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>
#define FI fopen("royfloyd.in","r")
#define FO fopen("royfloyd.out","w")

int mat[100][100],n;

void citeste(FILE *f) {
	int i,j;
	fscanf(f,"%i",&n);
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			fscanf(f,"%i",&mat[i][j]);
}

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(mat[i][k] && mat[k][j] && (mat[i][j]>mat[i][k]+mat[k][j] || !a[i][j]) && i!=j)
					mat[i][j]=mat[i][k]+mat[k][j];
}

void scrie (FILE *f) {
	int i,j;
	for(i=0;i<n;i++) {
		for(j=0;j<n;j++)
			fprintf(f,"%i ",mat[i][j]);
		fprintf(f,"\n");
	}
}

int main() {
	citeste(FI);
	royFloyd();
	scrie(FO);
	return 0;
}