Pagini recente » Cod sursa (job #926951) | Cod sursa (job #3341928) | Cod sursa (job #96725) | Cod sursa (job #3274764) | Cod sursa (job #3321279)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m,dp[50001];
vector<pair<int,int>>adj[250001];
void dijkstra()
{
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>pq;
pq.push({0,1});
dp[1] = 0;
while(!pq.empty())
{
int curr = pq.top().second;
int cost = pq.top().first;
pq.pop();
if(cost != dp[curr])
{
continue;
}
for(pair<int,int> i : adj[curr])
{
int urm = i.first;
int cost_nou = i.second;
if(dp[curr] + cost_nou < dp[urm])
{
dp[urm] = dp[curr] + cost_nou;
pq.push({cost_nou,urm});
}
}
}
}
int main()
{
fin >> n >> m;
for(int i = 1; i <= m; i++)
{
int st,dr,c;
fin >> st >> dr >> c;
adj[st].push_back({dr,c});
}
for(int i = 1; i <= n; i++)
dp[i] = INT_MAX;
dijkstra();
for(int i =2 ; i <= n; i++)
if(dp[i] == INT_MAX)
fout << 0 << ' ';
else
fout << dp[i] << ' ';
return 0;
}