Pagini recente » Cod sursa (job #1176895) | Cod sursa (job #715130) | Cod sursa (job #2182563) | Cod sursa (job #2199882) | Cod sursa (job #2925981)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
const int MAXM=250010;
const int MAXN=50010;
vector <pair <int,int>>g[MAXN];
int n,m,visit[MAXN];
int costm[MAXN];
priority_queue <pair <int,int>,vector <pair <int,int>>,greater <pair <int,int>>> pq;
int main()
{
fin >>n>>m;
for (int i=1;i<=m;++i){
int x,y,cost;
fin >>x>>y>>cost;
g[x].push_back ({cost,y});
}
for (int i=1;i<=n;++i)
costm[i]=1e18;
costm[1]=0;
pq.push ({0,1});
while (pq.empty ()==false){
int nod=pq.top ().second;
int costnod=pq.top ().first;
pq.pop ();
if (visit[nod]==1)
continue;
visit[nod]=1;
costm[nod]=costnod;
for (int i=0;i<g[nod].size ();++i){
int nodcrt=g[nod][i].second;
int costcrt=g[nod][i].first;
if (costm[nod]+costcrt<costm[nodcrt]){
pq.push ({costm[nod]+costcrt,nodcrt});
costm[nodcrt]=costm[nod]+costcrt;
}
}
}
for (int i=2;i<=n;++i){
if (visit[i]==0)
fout <<0<<' ';
else
fout <<costm[i]<<' ';
}
fin.close ();
fout.close ();
return 0;
}