Submission
Status:
PPPPPPP-PP
Subtask/Task Score:
90/100
Score: 90
User: tHeNyXs
Problemset: Fast Delivery
Language: cpp
Time: 0.003 second
Submitted On: 2026-03-04 08:23:35
#include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(false); cin.tie(nullptr);
int n, m; cin >> n >> m;
vector<pair<int, int>> graph[n];
while (m--) {
int u, v, w; cin >> u >> v >> w;
graph[u].emplace_back(v, w);
// graph[v].emplace_back(u, w);
}
int start; cin >> start;
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
pq.emplace(start, 0);
vector<int> dist(n, INT_MAX);
vector<vector<int>> path(n);
for (int i = 0; i < n; ++i) path[i].emplace_back(i);
dist[start] = 0;
while (!pq.empty()) {
auto [u, uw] = pq.top(); pq.pop();
for (auto[v, w] : graph[u]) {
if (dist[v] <= dist[u]+w) continue;
dist[v] = dist[u]+w;
path[v] = path[u];
path[v].emplace_back(v);
pq.emplace(v, dist[v]);
}
}
for (int i = 0; i < n; ++i) {
if (i == start) continue;
cout << start << " -> " << i << " (";
if (dist[i] == INT_MAX) cout << "inf)\n";
else {
cout << dist[i] << ") ";
for (int j : path[i]) {
cout << j << " ";
}
cout << '\n';
}
}
return 0;
}