Pagini recente » Cod sursa (job #992128) | Cod sursa (job #2210329) | Cod sursa (job #3258571) | Cod sursa (job #3162607) | Cod sursa (job #2280204)
#include <bits/stdc++.h>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int INF=1e9,Nmax=5e4+5;
vector <pair <int,int> >G[Nmax];
int d[Nmax];
inline void Dijkstra()
{
priority_queue <pair<int,int>,vector <pair<int,int> > ,greater <pair<int,int> > >pq;
pq.push({0,1});
while(!pq.empty())
{
int node=pq.top().second;
int value=pq.top().first;
pq.pop();
if(d[node]!=value) continue;
for(auto x:G[node])
{
if(value+x.second<d[x.first])
{d[x.first]=value+x.second;
pq.push({d[x.first],x.first});
}
}
}
}
int main()
{
int n,m,x,y,z;
f>>n>>m;
for(int i=1;i<=m;i++)
{
f>>x>>y>>z;
G[x].push_back({y,z});
}
for(int i=2;i<=n;i++) d[i]=INF;
Dijkstra();
for(int i=2;i<=n;i++)
g<<(d[i]!=INF ? d[i] : 0)<<" ";
return 0;
}