Pagini recente » Cod sursa (job #2850666) | Cod sursa (job #652634) | Cod sursa (job #823160) | Cod sursa (job #1936059) | Cod sursa (job #2923555)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m,c,a,b;
long long dist[50005];
vector< pair<int,int> > V[50005];
priority_queue<pair<long long,int>,vector< pair<long long,int>>,greater<pair<long long,int>> > P;
int main()
{
fin>>n>>m;
for(int i = 1;i<=m;i++)
{
fin>>a>>b>>c;
V[a].emplace_back(b,c);
}
dist[1] = 0;
for(int i = 2;i<=n;i++)
dist[i] = 1e18;
for(int i = 1;i<=n;i++)
P.push(make_pair(dist[i],i));
while(!P.empty())
{
pair<long long, int> element;
element = P.top();
P.pop();
if(dist[element.second]<element.first)
continue;
for(auto it:V[element.second])
{
if(dist[it.first]>dist[element.second] + it.second)
{
dist[it.first] = dist[element.second] + it.second;
P.push(make_pair(dist[it.first],it.first));
}
}
}
for(int i = 2;i<=n;i++)
{
if(dist[i]!=1e18)
fout<<dist[i]<<' ';
else
fout<<0<<' ';
}
}