Cod sursa(job #754145)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 31 mai 2012 20:52:52
Problema Floyd-Warshall/Roy-Floyd Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#define inf 1<<30
#define LE 106
using namespace std;
ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
int nod,que[LE*4],que2[LE*4],a[LE][LE],cost[LE],p,i,j,k2,k,n;
int nexT()
{
  k=k2;
  for(i=1; i<=k; ++i)
    que[i]=que2[i];
}
int main()
{
  f>>n;
  for(i=1; i<=n; ++i)
    for(j=1; j<=n; ++j)
      f>>a[i][j];

  for(nod=1; nod<=n; ++nod)
    {
        for(i=1;i<=n;++i) cost[i]=inf;
      k2=0;
      que[k=1]=nod;
      cost[nod]=0;

      do
        {
            k2=0;
               for(p=1; p<=k; ++p)
                  for(i=1; i<=n; ++i)
                    if (a[que[p]][i]&&cost[i]>a[que[p]][i]+cost[que[p]])
                     {
                       cost[i]=a[que[p]][i]+cost[que[p]];
                       que2[++k2]=i;
                     }
          nexT();
        }
      while(k2);

for(i=1;i<=n;++i)g<<cost[i]<<" ";
g<<'\n';
    }


  f.close();
  g.close();
  return 0;
}