#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
using namespace std;
void debug_out() { cerr << endl; }
template<typename Head, typename... Tail>
void debug_out(Head H, Tail... T) {
cerr << "[" << H << "]";
debug_out(T...);
}
#ifdef dddxxz
#define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__)
#else
#define debug(...) 42
#endif
#define SZ(s) ((int)s.size())
#define all(x) (x).begin(), (x).end()
#define revall(x) (x).rbegin(), (x).rend()
clock_t startTime;
double getCurrentTime() {
return (double) (clock() - startTime) / CLOCKS_PER_SEC;
}
#define MP make_pair
typedef long long ll;
mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());
const double eps = 0.00001;
const int MOD = 998244353;
const int INF = 1000000101;
const long long LLINF = 1223372000000000555;
const int N = 1e5 + 3e2;
const int M = 222;
vector<pair<int, int>> g[N];
int dist[N];
bool processed[N];
int parent[N][750];
int p[N];
int find_set(int x){
if (p[x] == x) return x;
return p[x] = find_set(p[x]);
}
void union_sets(int x, int y){
x = find_set(x);
y = find_set(y);
if (x == y) return;
if (rng() & 1) swap(x, y);
p[x] = y;
}
int qs[N], qt[N];
vector<int> queries[N];
int ans[N];
void solve(int TC) {
int n, m;
cin >> n >> m;
int SQ = sqrt(m) + 3;
for (int i = 1; i <= m; i++){
int u, v, w;
cin >> u >> v >> w;
g[u].emplace_back(v, w);
g[v].emplace_back(u, w);
}
for (int i = 1; i <= n; i++){
dist[i] = INF;
p[i] = i;
for (int j = 0; j < 750; j++) parent[i][j] = i;
}
priority_queue<pair<int, int>> pq;
int k;
cin >> k;
while (k--){
int x;
cin >> x;
dist[x] = 0;
pq.push(MP(0, x));
}
while (!pq.empty()){
int x = pq.top().second; pq.pop();
if (processed[x]) continue;
processed[x] = true;
for (auto edge : g[x]){
int y = edge.first, w = edge.second;
if (dist[y] > dist[x] + w){
dist[y] = dist[x] + w;
pq.push(MP(-dist[y], y));
}
}
}
vector<pair<int, pair<int, int>>> edges;
for (int i = 1; i <= n; i++){
for (auto edge : g[i]){
int j = edge.first;
if (i < j){
edges.emplace_back(min(dist[i], dist[j]), MP(i, j));
}
}
}
sort(all(edges));
for (int i = m - 1; i >= 0; i--){
int x = edges[i].second.first, y = edges[i].second.second;
union_sets(x, y);
if (i % SQ == 0){
for (int j = 1; j <= n; j++){
parent[j][i / SQ] = find_set(j);
}
}
}
int q;
cin >> q;
for (int i = 1; i <= q; i++){
cin >> qs[i] >> qt[i];
int block = SQ;
while (parent[qs[i]][block] != parent[qt[i]][block]) block--;
queries[block].push_back(i);
ans[i] = 0;
}
for (int i = 1; i <= n; i++) p[i] = i;
for (int i = m - 1; i >= 0; i--){
int x = edges[i].second.first, y = edges[i].second.second, w = edges[i].first;
union_sets(x, y);
for (int j : queries[i / SQ]){
if (find_set(qs[j]) == find_set(qt[j])) ans[j] = max(ans[j], w);
}
}
for (int i = 1; i <= q; i++){
cout << ans[i] << endl;
}
}
int main() {
startTime = clock();
cin.tie(nullptr); cout.tie(nullptr);
ios_base::sync_with_stdio(false);
bool llololcal = false;
#ifdef dddxxz
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
llololcal = true;
#endif
int TC = 1;
//cin >> TC;
for (int test = 1; test <= TC; test++) {
//debug(test);
//cout << "Case #" << test << ": ";
solve(test);
}
if (llololcal) cerr << endl << "Time: " << int(getCurrentTime() * 1000) << " ms" << endl;
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
5068 KB |
Output is correct |
2 |
Correct |
7 ms |
8012 KB |
Output is correct |
3 |
Correct |
8 ms |
8124 KB |
Output is correct |
4 |
Correct |
3 ms |
5068 KB |
Output is correct |
5 |
Correct |
8 ms |
8012 KB |
Output is correct |
6 |
Correct |
8 ms |
8012 KB |
Output is correct |
7 |
Correct |
4 ms |
5336 KB |
Output is correct |
8 |
Correct |
3 ms |
5324 KB |
Output is correct |
9 |
Correct |
8 ms |
7996 KB |
Output is correct |
10 |
Correct |
8 ms |
8128 KB |
Output is correct |
11 |
Correct |
8 ms |
8012 KB |
Output is correct |
12 |
Correct |
8 ms |
8012 KB |
Output is correct |
13 |
Correct |
8 ms |
7996 KB |
Output is correct |
14 |
Correct |
8 ms |
8012 KB |
Output is correct |
15 |
Correct |
8 ms |
8012 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
5068 KB |
Output is correct |
2 |
Correct |
7 ms |
8012 KB |
Output is correct |
3 |
Correct |
8 ms |
8124 KB |
Output is correct |
4 |
Correct |
3 ms |
5068 KB |
Output is correct |
5 |
Correct |
8 ms |
8012 KB |
Output is correct |
6 |
Correct |
8 ms |
8012 KB |
Output is correct |
7 |
Correct |
4 ms |
5336 KB |
Output is correct |
8 |
Correct |
3 ms |
5324 KB |
Output is correct |
9 |
Correct |
8 ms |
7996 KB |
Output is correct |
10 |
Correct |
8 ms |
8128 KB |
Output is correct |
11 |
Correct |
8 ms |
8012 KB |
Output is correct |
12 |
Correct |
8 ms |
8012 KB |
Output is correct |
13 |
Correct |
8 ms |
7996 KB |
Output is correct |
14 |
Correct |
8 ms |
8012 KB |
Output is correct |
15 |
Correct |
8 ms |
8012 KB |
Output is correct |
16 |
Correct |
1242 ms |
244220 KB |
Output is correct |
17 |
Correct |
3070 ms |
332144 KB |
Output is correct |
18 |
Correct |
123 ms |
44196 KB |
Output is correct |
19 |
Correct |
1331 ms |
310612 KB |
Output is correct |
20 |
Correct |
3079 ms |
332256 KB |
Output is correct |
21 |
Correct |
1926 ms |
315660 KB |
Output is correct |
22 |
Correct |
1270 ms |
309480 KB |
Output is correct |
23 |
Correct |
3030 ms |
332192 KB |
Output is correct |
24 |
Correct |
2967 ms |
332024 KB |
Output is correct |
25 |
Correct |
3058 ms |
332072 KB |
Output is correct |
26 |
Correct |
1355 ms |
310492 KB |
Output is correct |
27 |
Correct |
1340 ms |
310448 KB |
Output is correct |
28 |
Correct |
1339 ms |
310460 KB |
Output is correct |
29 |
Correct |
1345 ms |
310408 KB |
Output is correct |
30 |
Correct |
1336 ms |
310712 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
5068 KB |
Output is correct |
2 |
Correct |
3 ms |
5068 KB |
Output is correct |
3 |
Correct |
3 ms |
5068 KB |
Output is correct |
4 |
Correct |
3 ms |
5040 KB |
Output is correct |
5 |
Correct |
4 ms |
5068 KB |
Output is correct |
6 |
Correct |
3 ms |
5040 KB |
Output is correct |
7 |
Correct |
4 ms |
5068 KB |
Output is correct |
8 |
Correct |
4 ms |
5044 KB |
Output is correct |
9 |
Correct |
4 ms |
5068 KB |
Output is correct |
10 |
Correct |
3 ms |
5068 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
971 ms |
313068 KB |
Output is correct |
2 |
Correct |
1703 ms |
329596 KB |
Output is correct |
3 |
Correct |
1679 ms |
329500 KB |
Output is correct |
4 |
Correct |
637 ms |
305856 KB |
Output is correct |
5 |
Correct |
1689 ms |
329520 KB |
Output is correct |
6 |
Correct |
1653 ms |
329540 KB |
Output is correct |
7 |
Correct |
1696 ms |
329484 KB |
Output is correct |
8 |
Correct |
1712 ms |
329520 KB |
Output is correct |
9 |
Correct |
1722 ms |
329440 KB |
Output is correct |
10 |
Correct |
1806 ms |
329648 KB |
Output is correct |
11 |
Correct |
1764 ms |
329528 KB |
Output is correct |
12 |
Correct |
1762 ms |
329524 KB |
Output is correct |
13 |
Correct |
1740 ms |
329512 KB |
Output is correct |
14 |
Correct |
1777 ms |
329568 KB |
Output is correct |
15 |
Correct |
1810 ms |
330364 KB |
Output is correct |
16 |
Correct |
1782 ms |
329524 KB |
Output is correct |
17 |
Correct |
1801 ms |
329500 KB |
Output is correct |
18 |
Correct |
1832 ms |
329536 KB |
Output is correct |
19 |
Correct |
694 ms |
305852 KB |
Output is correct |
20 |
Correct |
1815 ms |
329664 KB |
Output is correct |
21 |
Correct |
1794 ms |
329656 KB |
Output is correct |
22 |
Correct |
704 ms |
308272 KB |
Output is correct |
23 |
Correct |
695 ms |
306396 KB |
Output is correct |
24 |
Correct |
695 ms |
308104 KB |
Output is correct |
25 |
Correct |
716 ms |
308016 KB |
Output is correct |
26 |
Correct |
681 ms |
306368 KB |
Output is correct |
27 |
Correct |
688 ms |
305828 KB |
Output is correct |
28 |
Correct |
699 ms |
308024 KB |
Output is correct |
29 |
Correct |
680 ms |
305984 KB |
Output is correct |
30 |
Correct |
684 ms |
308116 KB |
Output is correct |
31 |
Correct |
682 ms |
305864 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
5068 KB |
Output is correct |
2 |
Correct |
7 ms |
8012 KB |
Output is correct |
3 |
Correct |
8 ms |
8124 KB |
Output is correct |
4 |
Correct |
3 ms |
5068 KB |
Output is correct |
5 |
Correct |
8 ms |
8012 KB |
Output is correct |
6 |
Correct |
8 ms |
8012 KB |
Output is correct |
7 |
Correct |
4 ms |
5336 KB |
Output is correct |
8 |
Correct |
3 ms |
5324 KB |
Output is correct |
9 |
Correct |
8 ms |
7996 KB |
Output is correct |
10 |
Correct |
8 ms |
8128 KB |
Output is correct |
11 |
Correct |
8 ms |
8012 KB |
Output is correct |
12 |
Correct |
8 ms |
8012 KB |
Output is correct |
13 |
Correct |
8 ms |
7996 KB |
Output is correct |
14 |
Correct |
8 ms |
8012 KB |
Output is correct |
15 |
Correct |
8 ms |
8012 KB |
Output is correct |
16 |
Correct |
1242 ms |
244220 KB |
Output is correct |
17 |
Correct |
3070 ms |
332144 KB |
Output is correct |
18 |
Correct |
123 ms |
44196 KB |
Output is correct |
19 |
Correct |
1331 ms |
310612 KB |
Output is correct |
20 |
Correct |
3079 ms |
332256 KB |
Output is correct |
21 |
Correct |
1926 ms |
315660 KB |
Output is correct |
22 |
Correct |
1270 ms |
309480 KB |
Output is correct |
23 |
Correct |
3030 ms |
332192 KB |
Output is correct |
24 |
Correct |
2967 ms |
332024 KB |
Output is correct |
25 |
Correct |
3058 ms |
332072 KB |
Output is correct |
26 |
Correct |
1355 ms |
310492 KB |
Output is correct |
27 |
Correct |
1340 ms |
310448 KB |
Output is correct |
28 |
Correct |
1339 ms |
310460 KB |
Output is correct |
29 |
Correct |
1345 ms |
310408 KB |
Output is correct |
30 |
Correct |
1336 ms |
310712 KB |
Output is correct |
31 |
Correct |
3 ms |
5068 KB |
Output is correct |
32 |
Correct |
3 ms |
5068 KB |
Output is correct |
33 |
Correct |
3 ms |
5068 KB |
Output is correct |
34 |
Correct |
3 ms |
5040 KB |
Output is correct |
35 |
Correct |
4 ms |
5068 KB |
Output is correct |
36 |
Correct |
3 ms |
5040 KB |
Output is correct |
37 |
Correct |
4 ms |
5068 KB |
Output is correct |
38 |
Correct |
4 ms |
5044 KB |
Output is correct |
39 |
Correct |
4 ms |
5068 KB |
Output is correct |
40 |
Correct |
3 ms |
5068 KB |
Output is correct |
41 |
Correct |
971 ms |
313068 KB |
Output is correct |
42 |
Correct |
1703 ms |
329596 KB |
Output is correct |
43 |
Correct |
1679 ms |
329500 KB |
Output is correct |
44 |
Correct |
637 ms |
305856 KB |
Output is correct |
45 |
Correct |
1689 ms |
329520 KB |
Output is correct |
46 |
Correct |
1653 ms |
329540 KB |
Output is correct |
47 |
Correct |
1696 ms |
329484 KB |
Output is correct |
48 |
Correct |
1712 ms |
329520 KB |
Output is correct |
49 |
Correct |
1722 ms |
329440 KB |
Output is correct |
50 |
Correct |
1806 ms |
329648 KB |
Output is correct |
51 |
Correct |
1764 ms |
329528 KB |
Output is correct |
52 |
Correct |
1762 ms |
329524 KB |
Output is correct |
53 |
Correct |
1740 ms |
329512 KB |
Output is correct |
54 |
Correct |
1777 ms |
329568 KB |
Output is correct |
55 |
Correct |
1810 ms |
330364 KB |
Output is correct |
56 |
Correct |
1782 ms |
329524 KB |
Output is correct |
57 |
Correct |
1801 ms |
329500 KB |
Output is correct |
58 |
Correct |
1832 ms |
329536 KB |
Output is correct |
59 |
Correct |
694 ms |
305852 KB |
Output is correct |
60 |
Correct |
1815 ms |
329664 KB |
Output is correct |
61 |
Correct |
1794 ms |
329656 KB |
Output is correct |
62 |
Correct |
704 ms |
308272 KB |
Output is correct |
63 |
Correct |
695 ms |
306396 KB |
Output is correct |
64 |
Correct |
695 ms |
308104 KB |
Output is correct |
65 |
Correct |
716 ms |
308016 KB |
Output is correct |
66 |
Correct |
681 ms |
306368 KB |
Output is correct |
67 |
Correct |
688 ms |
305828 KB |
Output is correct |
68 |
Correct |
699 ms |
308024 KB |
Output is correct |
69 |
Correct |
680 ms |
305984 KB |
Output is correct |
70 |
Correct |
684 ms |
308116 KB |
Output is correct |
71 |
Correct |
682 ms |
305864 KB |
Output is correct |
72 |
Correct |
2092 ms |
315724 KB |
Output is correct |
73 |
Correct |
3226 ms |
332176 KB |
Output is correct |
74 |
Correct |
3203 ms |
331992 KB |
Output is correct |
75 |
Correct |
3252 ms |
332156 KB |
Output is correct |
76 |
Correct |
3218 ms |
331980 KB |
Output is correct |
77 |
Correct |
3222 ms |
332056 KB |
Output is correct |
78 |
Correct |
3262 ms |
332132 KB |
Output is correct |
79 |
Correct |
3222 ms |
332052 KB |
Output is correct |
80 |
Correct |
3231 ms |
332088 KB |
Output is correct |
81 |
Correct |
3310 ms |
332064 KB |
Output is correct |
82 |
Correct |
3279 ms |
332172 KB |
Output is correct |
83 |
Correct |
3281 ms |
331980 KB |
Output is correct |
84 |
Correct |
3349 ms |
331960 KB |
Output is correct |
85 |
Correct |
3457 ms |
332820 KB |
Output is correct |
86 |
Correct |
3387 ms |
332068 KB |
Output is correct |
87 |
Correct |
3417 ms |
332012 KB |
Output is correct |
88 |
Correct |
3320 ms |
332084 KB |
Output is correct |
89 |
Correct |
1587 ms |
309452 KB |
Output is correct |
90 |
Correct |
3186 ms |
332136 KB |
Output is correct |
91 |
Correct |
3131 ms |
331992 KB |
Output is correct |
92 |
Correct |
1565 ms |
310396 KB |
Output is correct |
93 |
Correct |
1453 ms |
309680 KB |
Output is correct |
94 |
Correct |
1537 ms |
310308 KB |
Output is correct |
95 |
Correct |
1544 ms |
310408 KB |
Output is correct |
96 |
Correct |
1357 ms |
309480 KB |
Output is correct |
97 |
Correct |
1525 ms |
308924 KB |
Output is correct |
98 |
Correct |
1551 ms |
310320 KB |
Output is correct |
99 |
Correct |
1533 ms |
308848 KB |
Output is correct |
100 |
Correct |
1549 ms |
310664 KB |
Output is correct |