Cod sursa(job #211447)

Utilizator vlad_popaVlad Popa vlad_popa Data 2 octombrie 2008 12:04:44
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>
#include <algorithm>

using namespace std;

#define MAXN 101
#define INF 0x3f3f3f3f

int N;
int A[MAXN][MAXN];

void read (){
	scanf ("%d\n", &N);

	for (int i = 1; i <= N; ++ i)
		for (int j = 1; j <= N; ++ j){
			scanf ("%d ", &A[i][j]);
			if (!A[i][j] && i != j) A[i][j] = INF;
		}
}

void solve (){
	for (int k = 1; k <= N; ++ k)
		for (int i = 1; i <= N; ++ i)
			for (int j = 1; j <= N; ++ j)
				A[i][j] = min (A[i][j], A[i][k] + A[k][j]);
	
	for (int i = 1; i <= N; ++ i){
		for (int j = 1; j <= N; ++ j)	
			printf ("%d ", A[i][j]);
		printf ("\n");
	}
}

int main (){ 
	freopen ("royfloyd.in", "r", stdin);
	freopen ("royfloyd.out", "w", stdout);
    
	read ();
	solve ();

	return 0;
}