Pagini recente » Cod sursa (job #592220) | Cod sursa (job #2033771) | Cod sursa (job #183231) | Cod sursa (job #1341629) | Cod sursa (job #1829443)
#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;
bool viz[50001];
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,d;
c.push(1); d.push(0);
int h,du;
viz[1]=1;
while(!c.empty())
{ h=c.front();
du=d.front();
c.pop();
d.pop();
for(p=v[h];p!=NULL;p=p->urm)
{ if(p->dist+du<di[p->info]) di[p->info]=p->dist+du;
if(viz[p->info]==0)
{ viz[p->info]=1;
c.push(p->info); d.push(du+p->dist);
}
}
}
}
int main()
{ Citire();
Dijkstra();
for(int i=2;i<=n;i++)
if(di[i]==20001) fout<<"0 ";
else fout<<di[i]<<" ";
return 0;
}