Pagini recente » Cod sursa (job #2822119) | Cod sursa (job #1441965) | Cod sursa (job #324346) | Cod sursa (job #2690058) | Cod sursa (job #3296275)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
#define ll int
priority_queue<pair<ll, ll>, vector<pair<ll, ll>>, greater<pair<ll, ll>>> pq;
vector<vector<pair<ll, ll>>> a(50005);
vector<ll> dmin(50005, 1e9);
int main()
{
ll n, m, x, y, z;
cin>>n>>m;
pq.push({0, 1});
dmin[1] = 0;
for(int i = 1; i <= m; i++)
{
cin>>x>>y>>z;
a[x].push_back({y, z});
}
while(!pq.empty())
{
if(pq.top().first < dmin[pq.top().second])
{pq.pop(); continue;}
pair<int, int> x = pq.top();
pq.pop();
for(int i = 0; i < a[x.second].size(); i++)
if(dmin[a[x.second][i].first] > x.first + a[x.second][i].second)
dmin[a[x.second][i].first] = x.first + a[x.second][i].second, pq.push({dmin[a[x.second][i].first], a[x.second][i].first});
}
for(int i = 2; i <= n; i++)
{
if(dmin[i] == 1e9)
cout<<"0"<<" ";
else
cout<<dmin[i]<<" ";
}
return 0;
}