Cod sursa(job #531174)

Utilizator marcelcodreaCodrea Marcel marcelcodrea Data 9 februarie 2011 00:12:16
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <math.h>
#define N 1999999973

using namespace std;
int a[102][102];
int n;

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

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

    for(int k = 1; k <= n; k++)
     for(int i = 1; i <= n; i++)
      for(int j = 1; j <= n; j++)
       if (i != j) {
           if (a[i][k] != 0 && a[k][j] != 0)
            if (a[i][j] > a[i][k] + a[k][j] || a[i][j] == 0)
             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");
    }
    return 0;
}