Cod sursa(job #472320)

Utilizator Smaug-Andrei C. Smaug- Data 23 iulie 2010 19:19:22
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <cstdio>
#define MAXN 1010

int main(){

  freopen("royfloyd.in", "r", stdin);
  freopen("royfloyd.out", "w", stdout);

  int i, j, k, N, path[MAXN][MAXN];

  scanf("%d", &N);
  for(i = 1; i <= N; i++)
    for(j = 1; j <= N; j++)
      scanf("%d", &path[i][j]);

  for(k = 1; k <= N; k++)
    for(i = 1; i <= N; i++)
      for(j = 1; j <= N; j++)
	if(path[i][k] && path[k][j] && (path[i][j] > path[i][k]+path[k][j] || !path[i][j]) && i != j)
	  path[i][j] = path[i][k] + path[k][j];

  for(i = 1; i <= N; i++){
    for(j = 1; j <= N; j++)
      printf("%d ", path[i][j]);
    printf("\n");
  }

  return 0;

}