Pagini recente » Cod sursa (job #1263707) | Cod sursa (job #1572465) | Cod sursa (job #1027303) | Cod sursa (job #2763632) | Cod sursa (job #3321277)
#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({1,0});
dp[1] = 0;
while(!pq.empty())
{
int curr = pq.top().first;
int cost = pq.top().second;
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({urm,cost_nou});
}
}
}
}
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++)
fout << dp[i] << ' ';
return 0;
}