Cod sursa(job #901780)

Utilizator pbobitzaPirvanescu Livius pbobitza Data 1 martie 2013 11:41:35
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<iostream>
#include<fstream>
#define inf1 10000001;
using namespace std;


int a[1000][1000],c[1000][1000],n;


ifstream in("royfloyd.in");
ofstream out("royfloyd.out");

int main()
{
    in>>n;

    for (int i=1;i<=n;++i)
        for (int j=1;j<=n;++j)
          {in>>a[i][j];c[i][j]=a[i][j];
          if (c[i][j]==0) c[i][j]=inf1;
          }
    for (int k=1;k<=n;++k)
         for (int i=1;i<=n;++i)
            for (int j=1;j<=n;++j)
              if (i!=j&&a[i][k]&&a[k][j])
                if (c[i][j]>a[i][k]+a[k][j] || !c[i][j]) c[i][j]=a[i][k]+a[k][j];


    for (int i=1;i<=n;++i)
         {
             for (int j=1;j<=n;++j)
               if (c[i][j]!=10000001)   cout<<c[i][j]<<" ";
                   else cout<<0<<" ";
                  cout<<'\n';
         }


       return 0;

}