Pagini recente » Cod sursa (job #1773374) | Clasament going_oni_prep | Cod sursa (job #2332595) | Cod sursa (job #962208) | Cod sursa (job #3029971)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int N, M;
vector<pair<int, int>> adi[50001];
bool vizi[50001];
int dist[50001];
struct cuba {
int nod, cost;
bool operator < (const cuba &ceva) const {
return ceva.cost < cost;
}
};
priority_queue<cuba> q;
void dijkstra() {
while(!q.empty()) {
int nodcrt = q.top().nod;
vizi[nodcrt] = true;
q.pop();
cuba a;
for(auto nou : adi[nodcrt]) {
if(!vizi[nou.first] && dist[nou.first] > dist[nodcrt] + nou.second) {
a.nod = nou.first;
dist[nou.first] = dist[nodcrt] + nou.second;
a.cost = dist[nou.first];
q.push(a);
}
}
}
}
int main() {
fin >> N >> M;
int a, b, c;
for(int i = 1; i <= M; i++) {
fin >> a >> b >> c;
adi[a].push_back(make_pair(b, c));
adi[b].push_back(make_pair(a, c));
}
for(int i = 1; i <= N; i++) {
dist[i] = INT_MAX;
}
dist[1] = 0;
vizi[1] = true;
cuba start;
start.nod = 1;
start.cost = 0;
q.push(start);
dijkstra();
for(int i = 2; i <= N; i++) {
if(dist[i] == INT_MAX) {
fout << "0 ";
}
else {
fout << dist[i] << " ";
}
}
return 0;
}