Pagini recente » Cod sursa (job #751248) | Cod sursa (job #356385) | Cod sursa (job #2374113) | Cod sursa (job #3183062) | Cod sursa (job #2681286)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#define pb push_back
#define inf 2e9
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m,a,b,c,viz[50001],d[50001];
vector <pair<int,int> > v[50001];
priority_queue<pair<int,int>, vector<pair<int,int> >, greater<pair<int,int> > > h;
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
{
fin>>a>>b>>c;
v[a].pb({c,b});
}
// sursa 1
// d[1]=0;
for(int i=2;i<=n;i++)
d[i]=inf;
h.push({0,1});
for(int pas=1;pas<n;pas++)
{
int nod = h.top().second;
h.pop();
if(viz[nod]==0)
{
for(int i=0;i<v[nod].size();i++)
{
int next = v[nod][i].second;
int cost = v[nod][i].first;
if(d[nod]+cost<d[next])
{
d[next]=d[nod]+cost;
h.push({d[next],next});
}
}
}
viz[nod]=1;
}
for(int i=2;i<=n;i++)
{
if(d[i]==inf)fout<<0<<" ";
else fout<<d[i]<<" ";
}
}