Pagini recente » Cod sursa (job #3267651) | Cod sursa (job #2126528) | Cod sursa (job #3229794) | Cod sursa (job #757335) | Cod sursa (job #2923498)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
const int MAXN=250010;
vector <pair <long long,long long>>g[MAXN];
long long n,m,visit[MAXN];
long long costm[MAXN];
priority_queue <pair <long long,long long>,vector <pair <long long,long long>>,greater <pair <long long,long long>>> pq;
int main()
{
fin >>n>>m;
for (int i=1;i<=m;++i){
long long x,y,cost;
fin >>x>>y>>cost;
g[x].push_back ({cost,y});
g[y].push_back ({cost,x});
}
for (int i=1;i<=n;++i)
costm[i]=1e18;
costm[1]=0;
pq.push ({0,1});
while (pq.empty ()==false){
long long nod=pq.top ().second;
long long 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){
long long nodcrt=g[nod][i].second;
long long 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 <<-1<<' ';
else
fout <<costm[i]<<' ';
}
fin.close ();
fout.close ();
return 0;
}