Cod sursa(job #442847)

Utilizator nandoLicker Nandor nando Data 15 aprilie 2010 15:33:21
Problema Floyd-Warshall/Roy-Floyd Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <cstdio>
using namespace std;

FILE* fin=fopen("royfloyd.in","r");
FILE* fout=fopen("royfloyd.out","w");

#define MAX 55
#define min(a,b) (((a)<(b))?(a):(b))

int a[MAX][MAX];

int main(){
	int n;
	fscanf(fin,"%d\n",&n);
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			fscanf(fin,"%d ",&a[i][j]);
		}
	}
	
	for(int k=0;k<n;k++){
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				if(i!=j){
					a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
				}else{
					a[i][j]=0;
				}
			}
		}
	}

	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			fprintf(fout,"%d ",a[i][j]);
		}
		fputc('\n',fout);
	}

	fclose(fin);
	fclose(fout);
	return 0;
}