Cod sursa(job #1238355)

Utilizator allexx2200Atanasiu Alexandru-Marian allexx2200 Data 6 octombrie 2014 20:00:40
Problema Floyd-Warshall/Roy-Floyd Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 0.68 kb
#include <stdio.h>

#define FIN "royfloyd.in"
#define FOUT "royfloyd.out"

int n, a[100][100];

void roy(){
	int i,j,k;
	for(i=0; i < n; i++){
		for(j=0; j < n; j++){
			for(k=0; k < n; k++){
				if(a[i][j] > a[i][k]+a[k][j] && a[i][k] != 0 && a[k][j] != 0)
					a[i][j] = a[i][k]+a[k][j];
			}
		}
	}
}
int main(){
	FILE *in = fopen(FIN, "rt");
	FILE *out = fopen(FOUT, "wt");
	int i,j;
	fscanf(in, "%d", &n);
	for(i=0; i < n; i++){
		for(j=0; j < n; j++){
			fscanf(in, "%d", &a[i][j]);
		}
	}
	roy();
	for(i=0; i < n; i++){
		for(j=0; j < n; j++){
			fprintf(out, "%d ", a[i][j]);
		}
		fprintf(out, "\n");
	}
	fclose(in);
	fclose(out);
	return 0;
}