Cod sursa(job #562465)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 23 martie 2011 09:11:44
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<stdio.h>
#define INF 1 << 20
#define maxN 105

FILE*f=fopen("royfloyd.in","r");
FILE*g=fopen("royfloyd.out","w");

int N,i,j,k,C[maxN][maxN];

int main () {
	fscanf(f,"%d",&N);
	
	for ( i = 1 ; i <= N ; ++i ){
		for ( j = 1 ; j <= N ; ++j ){
			fscanf(f,"%d",&C[i][j]);
			if ( !C[i][j] )
				C[i][j] = INF;
		}
	}
	
	for ( k = 1 ; k <= N ; ++k ){
		for ( i = 1 ; i <= N ; ++i ){
			for ( j = 1 ; j <= N ; ++j ){
				if ( i != j && C[i][k] + C[k][j] < C[i][j] ){
					C[i][j] = C[i][k] + C[k][j] ;
				}
			}
		}
	}
	
	for ( i = 1 ; i <= N ; ++i ){
		for ( j = 1 ; j <= N ; ++j ){
			if ( C[i][j] == INF ){
				fprintf(g,"0 ");
				continue ;
			}
			fprintf(g,"%d ",C[i][j]);
		}
		fprintf(g,"\n");
	}
	
	
	fclose(f);
	fclose(g);
	
	return 0;
}