Pagini recente » Cod sursa (job #2932918) | Cod sursa (job #297870) | Cod sursa (job #1371958) | Cod sursa (job #1614955) | Cod sursa (job #2702980)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
typedef long long ll;
#define pb push_back
const int N = 1e5, M = 2e5;
struct Edge {
int first;
int second;
int ind;
};
vector <Edge> gr[1 + N];
ll dist[1 + N];
void solve() {
int n, m;
fin >> n >> m;
for (int i = 1; i <= m; i++) {
int x, y, c;
fin >> x >> y >> c;
gr[x].pb({ y, c, i });
}
for (int i = 1; i <= n; i++) dist[i] = (1ll << 62);
priority_queue <pair <int, ll>> pq;
pq.push({ 0, 1 });
dist[1] = 0;
while (pq.size()) {
int node = pq.top().second;
pq.pop();
for (auto vec : gr[node])
if (dist[vec.first] > dist[node] + vec.second) {
dist[vec.first] = dist[node] + vec.second;
pq.push({ -dist[vec.first], vec.first });
}
}
for (int i = 2; i <= n; ++i) {
if (dist[i] == 1ll << 62) {
dist[i] = 0;
}
fout << dist[i] << ' ';
}
fout << '\n';
}
int main() {
solve();
return 0;
}