Cod sursa(job #1197355)

Utilizator c0rn1Goran Cornel c0rn1 Data 11 iunie 2014 19:13:55
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <cstdio>
#include <algorithm>
#define inf 0x3f3f3f3f

using namespace std;
int n, a[105][105];

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]);
         if (a[i][j]==0)
            a[i][j]=inf;
      }
}

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

void Afisare()
{
   int i, j;
   for (i=1; i<=n; i++, printf("\n"))
      for (j=1; j<=n; j++)
         if (a[i][j]==inf)
            printf("0 ");
         else
            printf("%d ", a[i][j]);
}

int main()
{
   freopen("royfloyd.in", "r", stdin);
   freopen("royfloyd.out", "w", stdout);
   Citire();
   Solve();
   Afisare();
   return 0;
}