Pagini recente » Cod sursa (job #2194959) | Cod sursa (job #2355127) | Cod sursa (job #1796989) | Cod sursa (job #1281617) | Cod sursa (job #2888168)
#include <iostream>
#include <fstream>
#include <vector>
#include <bitset>
#include <queue>
#define int long long
#define pii pair <int, int>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int N = 5e4, inf = 1e18;
int dist[N + 1];
vector <pii> adj[N + 1];
bitset <N + 1> viz;
priority_queue <pii> pq;
void djk(int source){
pq.push({0, source}); // {cost, nod}
while(!pq.empty()){
int nod = pq.top().second;
pq.pop();
if(!viz[nod]){
for(auto vec : adj[nod]){
if(vec.second + dist[nod] < dist[vec.first]){
dist[vec.first] = vec.second + dist[nod];
pq.push({-dist[vec.first], vec.first});
}
}
viz[nod] = 1;
}
}
}
signed main(){
int n, m;
fin >> n >> m;
for(int i = 1; i <= m; i++){
int a, b, c;
fin >> a >> b >> c;
adj[a].push_back({b, c});
}
for(int i = 2; i <= n; i++)
dist[i] = inf;
djk(1);
for(int i = 2; i <= n; i++)
fout << (dist[i] != inf) * dist[i] << ' ';
return 0;
}