Pagini recente » Cod sursa (job #878852) | Cod sursa (job #2990263) | Cod sursa (job #702733) | Cod sursa (job #1003474) | Cod sursa (job #3349254)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
vector<pair<int, int>>edges[50005];
priority_queue<pair<int, int>>cue;
int val[50005];
int main()
{
ifstream cin ("dijkstra.in");
ofstream cout ("dijkstra.out");
int n, m, a, b, c;
cin>>n>>m;
for (int i=1; i<=n; i++)
{
val[i]=2100000000;
}
for (int i=1; i<=m; i++)
{
cin>>a>>b>>c;
edges[a].push_back(make_pair(c, b));
}
val[1]=0;
cue.push(make_pair(0, 1));
while(!cue.empty())
{
int cr_cost=-cue.top().first;
int cr_vert=cue.top().second;
//cout<<cr_vert<<"HEH"<<'\n';
cue.pop();
for (auto x:edges[cr_vert])
{
int new_vert=x.second;
int extra_cost=x.first;
if (val[new_vert]>val[cr_vert]+extra_cost)
{
val[new_vert]=val[cr_vert]+extra_cost;
cue.push(make_pair(-val[new_vert], new_vert));
}
}
}
for (int i=2; i<=n; i++)
{
if (val[i]==2100000000)
cout<<0<<" ";
else
cout<<val[i]<<" ";
}
}