Cod sursa(job #1829465)

Utilizator Garen456Paun Tudor Garen456 Data 14 decembrie 2016 23:47:24
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
typedef struct nod
{ int info,dist;
    nod *urm;
} *Pnod;
Pnod v[50001],p;

int n,m,di[50001];
void Citire()
{ fin>>n>>m; int x,y,d,i;
    for(i=1;i<=m;i++)
    { fin>>x>>y>>d;
        p=new nod;
        p->info=y;
        p->dist=d;
        p->urm=v[x];
        v[x]=p;
        p=new nod;
        p->info=x;
        p->dist=d;
        p->urm=v[y];
        v[y]=p;
    }
   for(i=2;i<=n;i++)
        di[i]=20001;
}
void Dijkstra()
{ queue <int> c;
  c.push(1);
  int h;

  while(!c.empty())
  { h=c.front();

      c.pop();

      for(p=v[h];p!=NULL;p=p->urm)
          if(di[h]+p->dist<di[p->info]) {di[p->info]=di[h]+p->dist; c.push(p->info);}
  }

}
int main()
{  Citire();
    Dijkstra();
    for(int i=2;i<=n;i++)
      if(di[i]==20001) fout<<"0 ";
       else fout<<di[i]<<" ";
    return 0;
}