Cod sursa(job #154923)

Utilizator zobicaMarin Marin zobica Data 11 martie 2008 16:26:24
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <stdio.h>


#define lim 101

int a[lim][lim];
int n;

void royFloydf() {
	for (int k = 0; k < n; k++)
		for (int i = 0; i < n; i++)
			for (int j = 0; j < n; j++) 
				if ( a[i][j] > a[i][k] + a[k][j] ) 
					a[i][j] = a[i][k] + a[k][j];    
}

void afis() {
	freopen("royfloyd.out", "w", stdout);
	for (int i = 0; i < n; i++ ) {
		for (int j = 0; j < n; j++)
			printf ("%d ", a[i][j]);
		printf("\n");
	}
	fclose(stdout);
}

void citire() {
	freopen("royfloyd.in", "r", stdin);
	scanf("%d\n", &n);
	for (int i = 0; i < n;i++)
		for (int j =0; j < n; j++) {
			scanf("%d", &a[i][j]);
			if (i != j && !a[i][j])
				a[i][j] = 1000000;                
		}
		fclose(stdin);
} 

int main() {
	citire();
	royFloydf();
	afis();   
	return 0;
}