Pagini recente » Cod sursa (job #1158734) | Cod sursa (job #2659516) | Cod sursa (job #2106285) | Cod sursa (job #2790866) | Cod sursa (job #2970028)
#include <bits/stdc++.h>
using namespace std;
#define nmax 100000
#define inf 1e18
#define ll long long
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n;
vector<vector<pair<int,ll>>> dk(nmax+5);
ll dp[nmax+5];
void dijkstra(){
priority_queue<pair<int,ll>, vector<pair<int,ll>>, greater<pair<int,ll>>>pq;
for(int i=1;i<=n;++i)
dp[i]=inf;
dp[1]=0;
pq.push({1,0});
while(pq.size()){
pair<int,ll>now=pq.top();
pq.pop();
if(now.second!=dp[now.first])continue;
for(auto i:dk[now.first]){
pair<int,ll>nxt=i;
if(dp[nxt.first]>now.second+nxt.second){
dp[nxt.first]=now.second+nxt.second;
pq.push({nxt.first,now.second+nxt.second});
}
}
}
}
int main()
{
int m;
f>>n>>m;
for(int i=1;i<=m;++i)
{
int x,y;
ll c;
f>>x>>y>>c;
dk[x].emplace_back(y,c);
}
dijkstra();
for(int i=2;i<=n;++i)
g<<dp[i]<<" ";
}