# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1091652 | 2024-09-21T17:20:26 Z | raphaelp | Sightseeing (NOI14_sightseeing) | C++14 | 2133 ms | 82392 KB |
#include <bits/stdc++.h> using namespace std; vector<int> p; int find(int x) { return (p[x] == x) ? x : p[x] = find(p[x]); } int main() { int N, M, Q; cin >> N >> M >> Q; vector<vector<pair<int, int>>> buckets(1000010); for (int i = 0; i < M; i++) { int a, b, c; cin >> a >> b >> c; a--, b--; buckets[c].push_back({a, b}); } p.assign(N, 0); for (int i = 0; i < N; i++) p[i] = i; vector<int> dist(N); vector<vector<int>> contains(N); for (int i = 0; i < N; i++) contains[i].push_back(i); for (int i = 1000000; i >= 0; i--) { for (int j = 0; j < buckets[i].size(); j++) { if (M > 1000000) continue; int x = find(buckets[i][j].first), y = find(buckets[i][j].second); if (x == y) continue; if (contains[x].size() > contains[y].size()) swap(x, y); if (find(0) == x) swap(x, y); p[x] = y; for (auto val : contains[x]) { if (y == find(0)) dist[val] = i; contains[y].push_back(val); } } } for (int i = 0; i < Q; i++) { int x; cin >> x; cout << dist[x - 1] << '\n'; } }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 12 ms | 23900 KB | Output is correct |
2 | Correct | 12 ms | 23792 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 13 ms | 23900 KB | Output is correct |
2 | Correct | 17 ms | 23832 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 56 ms | 27856 KB | Output is correct |
2 | Correct | 47 ms | 27364 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 2133 ms | 82392 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |