Cod sursa(job #733793)

Utilizator I.AlexandruIlie Alexandru I.Alexandru Data 12 aprilie 2012 23:56:46
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
#define maxn 101
#define infinity 27182818
using namespace std;

ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
int n, p[maxn][maxn];

inline int min(int a, int b)
{return (a<b) ? (a):(b);
}

void royfloyd()
{for(int k=0; k<n; k++)
    for(int i=0; i<n; i++)
       for(int j=0; j<n; j++)
          p[i][j]=min(p[i][j], p[i][k]+p[k][j]);
}

int main()
{f>>n;
    
for(int i=0; i<n; i++)
   for(int j=0; j<n; j++) 
      {f>>p[i][j];
       if(!p[i][j] && i!=j)
         p[i][j]=infinity;
      }

royfloyd();

for(int i=0; i<n; i++) 
   {for(int j=0; j<n; j++) 
       (p[i][j]==infinity) ? (g<<0<<" "):(g<<p[i][j]<<" "); 
    g<<"\n";
   }

return 0;
}