Cod sursa(job #387092)

Utilizator bixcabc abc bixc Data 26 ianuarie 2010 20:09:52
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>

#define Nmax 105
void citire ();
int n;
int a[Nmax][Nmax];

void royfloyd () {
	
	int i, j, k;
	for (k = 1; k <= n; k++)
		for (i = 1; i <= n; i++)
			for (j = 1; j <= n; j++)
				if ( (a[i][j] > a[i][k] + a[k][j] || !a[i][j]) && i != j && a[i][k] && a[k][j])
					a[i][j] = a[i][k] + a[k][j];
}

int main () {

	freopen ("royfloyd.in", "r", stdin);
	freopen ("royfloyd.out", "w", stdout);
	
	citire ();
	royfloyd ();
	
	int i, j;
	for (i = 1; i <= n; i++) {
		for (j = 1; j <= n; j++) 
			printf ("%d ", a[i][j]);
		
		printf ("\n");
	}
	return 0;
}

void citire () {

	int i, j;
	scanf ("%d", &n);
	for (i = 1; i <= n; i++)
		for (j = 1; j <= n; j++) 
			scanf ("%d", &a[i][j]);
}