Pagini recente » Cod sursa (job #528259) | Cod sursa (job #1597542) | Cod sursa (job #11676) | Cod sursa (job #537020) | Cod sursa (job #3148697)
#include <bits/stdc++.h>
#define pb push_back
#define ll long long
#define loop(i,a,b) for(int i=a;i<=b;i++)
#define ln '\n'
#define inf 2e9
#define cin f
#define cout g
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n, p, x, y, z, d[101];
bool c[101];
vector<pair<int, int>> v[101];
int main()
{
cin>>n>>p;
p = 1;
while(cin>>x>>y>>z)
v[x].pb({y, z});
loop(i,1,n)d[i] = inf;
d[p] = 0;
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q;
q.push({0, p});
while(!q.empty()){
x = q.top().second;
q.pop();
if(c[x])continue;
c[x] = 1;
for(auto i : v[x]){
y = i.first;z = i.second;
if(d[y] > d[x]+z){
d[y] = d[x]+z;
q.push({d[y], y});
}
}
}
loop(i,1,n)cout<<(d[i] == inf ? -1 : d[i])<<' ';
}