Cod sursa(job #163455)

Utilizator vlad2179Popescu Vlad Alexandru vlad2179 Data 22 martie 2008 11:58:35
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdio.h>
FILE *f=fopen("royfloyd.in","rt");
FILE *g=fopen("royfloyd.out","wt");
int a[101][101],dr[101][101],n;
void date(void);
void solve(void);
void afisare(void);
int main(){
	date();
	solve();
	afisare();
	return 0;
}
void date(){
	fscanf(f,"%d",&n);
	for(int i=1;i<=n;i++) 
		for(int j=1;j<=n;j++)
			fscanf(f,"%d",&a[i][j] );
}
void solve(){
	for(int k=1;k<=n;k++){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				if(i==j) a[i][j]=0;
				else if(a[i][j]){
				if(a[i][j] > a[i][k] + a[k][j]) a[i][j]=a[i][k]+a[k][j];
				}
			}
		}
	}
}
void afisare(){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			fprintf(g,"%d ",a[i][j]);
		}
		fprintf(g,"\n");
	}
}