#include <bits/stdc++.h>
using namespace std;
#define FOR(i, a, b) for (int i = (a); i < (b); ++i)
#define FORd(i, a, b) for (int i = (a) - 1; i >= (b); --i)
#define sz(a) int((a).size())
#define all(a) (a).begin(), (a).end()
#define pb push_back
#define mp make_pair
#define fi first
#define se second
typedef pair<int, int> pi;
typedef vector<int> vi;
typedef vector<pi> vii;
typedef unsigned long long ull;
inline ull isqrt(ull k) {ull r = sqrt(k) + 1; while (r * r > k) r--; return r;}
const int INF = (int) 1e9 + 23111992;
void sol() {
int n_lim = 5e4, m_lim = 1e5, q_lim = 2e5;
int t, n, m; cin >> n >> m;
assert(1 <= n && n <= n_lim);
assert(0 <= m && m <= m_lim);
vector<tuple<int, int, int>> edges;
FOR(i, 0, m) {
int u, v, w; cin >> u >> v >> w; u--, v--, w = -w;
assert(0 <= u && u < n);
assert(0 <= v && v < n);
assert(0 <= -w && -w <= 1e9);
edges.pb(make_tuple(u, v, w));
}
vector<tuple<int, int, int>> queries;
vector<tuple<int, int, int, int>> events;
vi lst_t(m, 0);
int q; cin >> q;
if (n == 1) {
for (int i = 0; i < q; ++i) {
int t, a, b;
cin >> t >> a >> b;
if (t == 2) {
cout << "1\n";
}
}
return;
}
assert(1 <= q && q <= q_lim);
FOR(i, 0, q) {
int op, u, w; cin >> op >> u >> w, u--, w = -w;
assert(1 <= op && op <= 2);
assert(0 <= -w && -w <= 1e9);
if (op == 1) {
events.pb(make_tuple(-get<2>(edges[u]), lst_t[u], i - 1, u));
lst_t[u] = i;
get<2>(edges[u]) = w;
assert(0 <= u && u < m);
}
else {
queries.pb(make_tuple(w, u, i));
assert(0 <= u && u < n);
}
}
FOR(i, 0, m) {
events.pb(make_tuple(-get<2>(edges[i]), lst_t[i], q - 1, i));
}
reverse(all(queries)), sort(all(events));
vii res;
vi adj(m << 1), nxt(m << 1), lst(n, -1);
vi dj(n), size(n);
vi qs(n), vis(n, -1);
int magic = 3 * isqrt(n + m);
for (int lo = 0; lo < q; lo += magic) {
int hi = min(lo + magic - 1, q - 1);
vector<tuple<int, int, int>> queries_t;
while (sz(queries) && get<2>(queries.back()) <= hi) {
queries_t.pb(queries.back());
queries.pop_back();
}
sort(all(queries_t)), reverse(all(queries_t));
FOR(i, 0, n) dj[i] = i, size[i] = 1;
auto find = [&] (int u) {
while (dj[u] ^ u) {
dj[u] = dj[dj[u]];
u = dj[u];
}
return u;
};
auto join = [&] (int u, int v) {
u = find(u), v = find(v);
if (u ^ v) {
if (size[v] < size[u]) {
swap(u, v);
}
dj[u] = v, size[v] += size[u];
}
};
vi use(m);
vector<tuple<int, int, int, int>> events_t, events_o;
for (auto e : events) {
int w, l, r, ix;
tie(w, l, r, ix) = e;
if (!(r < lo) && !(hi < l) && !(l <= lo && hi <= r)) {
events_t.pb(e);
}
if (!use[ix] && !(r < lo) && !(hi < l)) {
use[ix] = 1;
events_o.pb(e);
}
}
reverse(all(events_o));
events_o.pb(make_tuple(-INF, +INF, -INF, 0));
for (auto e : events_o) {
int w, l, r, ix;
tie(w, l, r, ix) = e, w = -w;
while (sz(queries_t) && get<0>(queries_t.back()) < w) {
int wt = get<0>(queries_t.back());
int u = find(get<1>(queries_t.back()));
int t = get<2>(queries_t.back());
int ne = 0;
for (auto ee : events_t) {
int w, l, r, ix;
tie(w, l, r, ix) = ee, w = -w;
if (l <= t && t <= r && w <= wt) {
int u = find(get<0>(edges[ix]));
int v = find(get<1>(edges[ix]));
auto addedge = [&] (int u, int v) {
adj[ne] = v, nxt[ne] = lst[u], lst[u] = ne++;
};
if (u ^ v) {
addedge(u, v), addedge(v, u);
}
}
}
int qh = 0, qe = 0;
vis[u] = t, qs[qe++] = u;
int total = 0;
while (qh < qe) {
int u = qs[qh++];
total += size[u];
for (int ee = lst[u]; ~ee; ee = nxt[ee]) {
int v = adj[ee];
if (vis[v] ^ t) {
vis[v] = t, qs[qe++] = v;
}
}
}
res.pb(mp(t, total));
for (int i = 0; i < ne; i++) {
int u = adj[i];
lst[u] = -1;
}
queries_t.pop_back();
}
int u = get<0>(edges[ix]);
int v = get<1>(edges[ix]);
join(u, v);
}
}
sort(all(res));
FOR(i, 0, sz(res)) cout << res[i].se << "\n";
}
int main(int argc, char* argv[]) {
ios_base::sync_with_stdio(0), cin.tie(0);
sol();
return 0;
}
Compilation message
bridges.cpp: In function 'void sol()':
bridges.cpp:21:9: warning: unused variable 't' [-Wunused-variable]
int t, n, m; cin >> n >> m;
^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
2 |
Correct |
2 ms |
384 KB |
Output is correct |
3 |
Correct |
15 ms |
768 KB |
Output is correct |
4 |
Correct |
4 ms |
384 KB |
Output is correct |
5 |
Correct |
16 ms |
640 KB |
Output is correct |
6 |
Correct |
13 ms |
640 KB |
Output is correct |
7 |
Correct |
10 ms |
640 KB |
Output is correct |
8 |
Correct |
14 ms |
640 KB |
Output is correct |
9 |
Correct |
11 ms |
640 KB |
Output is correct |
10 |
Correct |
14 ms |
640 KB |
Output is correct |
11 |
Correct |
14 ms |
640 KB |
Output is correct |
12 |
Correct |
14 ms |
640 KB |
Output is correct |
13 |
Correct |
15 ms |
640 KB |
Output is correct |
14 |
Correct |
14 ms |
640 KB |
Output is correct |
15 |
Correct |
14 ms |
640 KB |
Output is correct |
16 |
Correct |
10 ms |
640 KB |
Output is correct |
17 |
Correct |
11 ms |
640 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
927 ms |
7752 KB |
Output is correct |
2 |
Correct |
896 ms |
7776 KB |
Output is correct |
3 |
Correct |
881 ms |
7792 KB |
Output is correct |
4 |
Correct |
849 ms |
7872 KB |
Output is correct |
5 |
Correct |
871 ms |
7764 KB |
Output is correct |
6 |
Correct |
925 ms |
8080 KB |
Output is correct |
7 |
Correct |
912 ms |
8288 KB |
Output is correct |
8 |
Correct |
910 ms |
8044 KB |
Output is correct |
9 |
Correct |
26 ms |
512 KB |
Output is correct |
10 |
Correct |
728 ms |
7804 KB |
Output is correct |
11 |
Correct |
549 ms |
7916 KB |
Output is correct |
12 |
Correct |
440 ms |
8672 KB |
Output is correct |
13 |
Correct |
614 ms |
7520 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
726 ms |
5904 KB |
Output is correct |
2 |
Correct |
363 ms |
3744 KB |
Output is correct |
3 |
Correct |
689 ms |
5936 KB |
Output is correct |
4 |
Correct |
698 ms |
6060 KB |
Output is correct |
5 |
Correct |
25 ms |
512 KB |
Output is correct |
6 |
Correct |
679 ms |
6072 KB |
Output is correct |
7 |
Correct |
635 ms |
6000 KB |
Output is correct |
8 |
Correct |
612 ms |
5888 KB |
Output is correct |
9 |
Correct |
355 ms |
6316 KB |
Output is correct |
10 |
Correct |
332 ms |
6184 KB |
Output is correct |
11 |
Correct |
503 ms |
5476 KB |
Output is correct |
12 |
Correct |
479 ms |
5452 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
489 ms |
12744 KB |
Output is correct |
2 |
Correct |
27 ms |
512 KB |
Output is correct |
3 |
Correct |
103 ms |
9344 KB |
Output is correct |
4 |
Correct |
80 ms |
9496 KB |
Output is correct |
5 |
Correct |
417 ms |
12780 KB |
Output is correct |
6 |
Correct |
573 ms |
12748 KB |
Output is correct |
7 |
Correct |
430 ms |
12876 KB |
Output is correct |
8 |
Correct |
361 ms |
8504 KB |
Output is correct |
9 |
Correct |
363 ms |
8504 KB |
Output is correct |
10 |
Correct |
358 ms |
8628 KB |
Output is correct |
11 |
Correct |
556 ms |
10944 KB |
Output is correct |
12 |
Correct |
713 ms |
10932 KB |
Output is correct |
13 |
Correct |
530 ms |
11144 KB |
Output is correct |
14 |
Correct |
399 ms |
12880 KB |
Output is correct |
15 |
Correct |
407 ms |
12756 KB |
Output is correct |
16 |
Correct |
693 ms |
12728 KB |
Output is correct |
17 |
Correct |
613 ms |
12784 KB |
Output is correct |
18 |
Correct |
598 ms |
12712 KB |
Output is correct |
19 |
Correct |
634 ms |
12648 KB |
Output is correct |
20 |
Correct |
573 ms |
11880 KB |
Output is correct |
21 |
Correct |
672 ms |
11768 KB |
Output is correct |
22 |
Correct |
576 ms |
12572 KB |
Output is correct |
23 |
Correct |
445 ms |
11472 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
927 ms |
7752 KB |
Output is correct |
2 |
Correct |
896 ms |
7776 KB |
Output is correct |
3 |
Correct |
881 ms |
7792 KB |
Output is correct |
4 |
Correct |
849 ms |
7872 KB |
Output is correct |
5 |
Correct |
871 ms |
7764 KB |
Output is correct |
6 |
Correct |
925 ms |
8080 KB |
Output is correct |
7 |
Correct |
912 ms |
8288 KB |
Output is correct |
8 |
Correct |
910 ms |
8044 KB |
Output is correct |
9 |
Correct |
26 ms |
512 KB |
Output is correct |
10 |
Correct |
728 ms |
7804 KB |
Output is correct |
11 |
Correct |
549 ms |
7916 KB |
Output is correct |
12 |
Correct |
440 ms |
8672 KB |
Output is correct |
13 |
Correct |
614 ms |
7520 KB |
Output is correct |
14 |
Correct |
726 ms |
5904 KB |
Output is correct |
15 |
Correct |
363 ms |
3744 KB |
Output is correct |
16 |
Correct |
689 ms |
5936 KB |
Output is correct |
17 |
Correct |
698 ms |
6060 KB |
Output is correct |
18 |
Correct |
25 ms |
512 KB |
Output is correct |
19 |
Correct |
679 ms |
6072 KB |
Output is correct |
20 |
Correct |
635 ms |
6000 KB |
Output is correct |
21 |
Correct |
612 ms |
5888 KB |
Output is correct |
22 |
Correct |
355 ms |
6316 KB |
Output is correct |
23 |
Correct |
332 ms |
6184 KB |
Output is correct |
24 |
Correct |
503 ms |
5476 KB |
Output is correct |
25 |
Correct |
479 ms |
5452 KB |
Output is correct |
26 |
Correct |
939 ms |
7852 KB |
Output is correct |
27 |
Correct |
1002 ms |
7928 KB |
Output is correct |
28 |
Correct |
946 ms |
7956 KB |
Output is correct |
29 |
Correct |
792 ms |
7716 KB |
Output is correct |
30 |
Correct |
1012 ms |
8036 KB |
Output is correct |
31 |
Correct |
988 ms |
7920 KB |
Output is correct |
32 |
Correct |
991 ms |
8004 KB |
Output is correct |
33 |
Correct |
956 ms |
7924 KB |
Output is correct |
34 |
Correct |
926 ms |
7880 KB |
Output is correct |
35 |
Correct |
986 ms |
7948 KB |
Output is correct |
36 |
Correct |
800 ms |
7840 KB |
Output is correct |
37 |
Correct |
811 ms |
7968 KB |
Output is correct |
38 |
Correct |
777 ms |
7840 KB |
Output is correct |
39 |
Correct |
467 ms |
8416 KB |
Output is correct |
40 |
Correct |
490 ms |
8424 KB |
Output is correct |
41 |
Correct |
449 ms |
8416 KB |
Output is correct |
42 |
Correct |
604 ms |
7524 KB |
Output is correct |
43 |
Correct |
642 ms |
7528 KB |
Output is correct |
44 |
Correct |
620 ms |
7648 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
2 |
Correct |
2 ms |
384 KB |
Output is correct |
3 |
Correct |
15 ms |
768 KB |
Output is correct |
4 |
Correct |
4 ms |
384 KB |
Output is correct |
5 |
Correct |
16 ms |
640 KB |
Output is correct |
6 |
Correct |
13 ms |
640 KB |
Output is correct |
7 |
Correct |
10 ms |
640 KB |
Output is correct |
8 |
Correct |
14 ms |
640 KB |
Output is correct |
9 |
Correct |
11 ms |
640 KB |
Output is correct |
10 |
Correct |
14 ms |
640 KB |
Output is correct |
11 |
Correct |
14 ms |
640 KB |
Output is correct |
12 |
Correct |
14 ms |
640 KB |
Output is correct |
13 |
Correct |
15 ms |
640 KB |
Output is correct |
14 |
Correct |
14 ms |
640 KB |
Output is correct |
15 |
Correct |
14 ms |
640 KB |
Output is correct |
16 |
Correct |
10 ms |
640 KB |
Output is correct |
17 |
Correct |
11 ms |
640 KB |
Output is correct |
18 |
Correct |
927 ms |
7752 KB |
Output is correct |
19 |
Correct |
896 ms |
7776 KB |
Output is correct |
20 |
Correct |
881 ms |
7792 KB |
Output is correct |
21 |
Correct |
849 ms |
7872 KB |
Output is correct |
22 |
Correct |
871 ms |
7764 KB |
Output is correct |
23 |
Correct |
925 ms |
8080 KB |
Output is correct |
24 |
Correct |
912 ms |
8288 KB |
Output is correct |
25 |
Correct |
910 ms |
8044 KB |
Output is correct |
26 |
Correct |
26 ms |
512 KB |
Output is correct |
27 |
Correct |
728 ms |
7804 KB |
Output is correct |
28 |
Correct |
549 ms |
7916 KB |
Output is correct |
29 |
Correct |
440 ms |
8672 KB |
Output is correct |
30 |
Correct |
614 ms |
7520 KB |
Output is correct |
31 |
Correct |
726 ms |
5904 KB |
Output is correct |
32 |
Correct |
363 ms |
3744 KB |
Output is correct |
33 |
Correct |
689 ms |
5936 KB |
Output is correct |
34 |
Correct |
698 ms |
6060 KB |
Output is correct |
35 |
Correct |
25 ms |
512 KB |
Output is correct |
36 |
Correct |
679 ms |
6072 KB |
Output is correct |
37 |
Correct |
635 ms |
6000 KB |
Output is correct |
38 |
Correct |
612 ms |
5888 KB |
Output is correct |
39 |
Correct |
355 ms |
6316 KB |
Output is correct |
40 |
Correct |
332 ms |
6184 KB |
Output is correct |
41 |
Correct |
503 ms |
5476 KB |
Output is correct |
42 |
Correct |
479 ms |
5452 KB |
Output is correct |
43 |
Correct |
489 ms |
12744 KB |
Output is correct |
44 |
Correct |
27 ms |
512 KB |
Output is correct |
45 |
Correct |
103 ms |
9344 KB |
Output is correct |
46 |
Correct |
80 ms |
9496 KB |
Output is correct |
47 |
Correct |
417 ms |
12780 KB |
Output is correct |
48 |
Correct |
573 ms |
12748 KB |
Output is correct |
49 |
Correct |
430 ms |
12876 KB |
Output is correct |
50 |
Correct |
361 ms |
8504 KB |
Output is correct |
51 |
Correct |
363 ms |
8504 KB |
Output is correct |
52 |
Correct |
358 ms |
8628 KB |
Output is correct |
53 |
Correct |
556 ms |
10944 KB |
Output is correct |
54 |
Correct |
713 ms |
10932 KB |
Output is correct |
55 |
Correct |
530 ms |
11144 KB |
Output is correct |
56 |
Correct |
399 ms |
12880 KB |
Output is correct |
57 |
Correct |
407 ms |
12756 KB |
Output is correct |
58 |
Correct |
693 ms |
12728 KB |
Output is correct |
59 |
Correct |
613 ms |
12784 KB |
Output is correct |
60 |
Correct |
598 ms |
12712 KB |
Output is correct |
61 |
Correct |
634 ms |
12648 KB |
Output is correct |
62 |
Correct |
573 ms |
11880 KB |
Output is correct |
63 |
Correct |
672 ms |
11768 KB |
Output is correct |
64 |
Correct |
576 ms |
12572 KB |
Output is correct |
65 |
Correct |
445 ms |
11472 KB |
Output is correct |
66 |
Correct |
939 ms |
7852 KB |
Output is correct |
67 |
Correct |
1002 ms |
7928 KB |
Output is correct |
68 |
Correct |
946 ms |
7956 KB |
Output is correct |
69 |
Correct |
792 ms |
7716 KB |
Output is correct |
70 |
Correct |
1012 ms |
8036 KB |
Output is correct |
71 |
Correct |
988 ms |
7920 KB |
Output is correct |
72 |
Correct |
991 ms |
8004 KB |
Output is correct |
73 |
Correct |
956 ms |
7924 KB |
Output is correct |
74 |
Correct |
926 ms |
7880 KB |
Output is correct |
75 |
Correct |
986 ms |
7948 KB |
Output is correct |
76 |
Correct |
800 ms |
7840 KB |
Output is correct |
77 |
Correct |
811 ms |
7968 KB |
Output is correct |
78 |
Correct |
777 ms |
7840 KB |
Output is correct |
79 |
Correct |
467 ms |
8416 KB |
Output is correct |
80 |
Correct |
490 ms |
8424 KB |
Output is correct |
81 |
Correct |
449 ms |
8416 KB |
Output is correct |
82 |
Correct |
604 ms |
7524 KB |
Output is correct |
83 |
Correct |
642 ms |
7528 KB |
Output is correct |
84 |
Correct |
620 ms |
7648 KB |
Output is correct |
85 |
Correct |
1303 ms |
12568 KB |
Output is correct |
86 |
Correct |
150 ms |
9524 KB |
Output is correct |
87 |
Correct |
112 ms |
9500 KB |
Output is correct |
88 |
Correct |
1082 ms |
12396 KB |
Output is correct |
89 |
Correct |
1388 ms |
12284 KB |
Output is correct |
90 |
Correct |
787 ms |
12728 KB |
Output is correct |
91 |
Correct |
956 ms |
7736 KB |
Output is correct |
92 |
Correct |
972 ms |
7744 KB |
Output is correct |
93 |
Correct |
1289 ms |
8052 KB |
Output is correct |
94 |
Correct |
1214 ms |
10600 KB |
Output is correct |
95 |
Correct |
1166 ms |
10680 KB |
Output is correct |
96 |
Correct |
1275 ms |
10964 KB |
Output is correct |
97 |
Correct |
539 ms |
12872 KB |
Output is correct |
98 |
Correct |
817 ms |
12124 KB |
Output is correct |
99 |
Correct |
1285 ms |
12428 KB |
Output is correct |
100 |
Correct |
1325 ms |
12168 KB |
Output is correct |
101 |
Correct |
1386 ms |
12484 KB |
Output is correct |
102 |
Correct |
1307 ms |
12276 KB |
Output is correct |
103 |
Correct |
1315 ms |
11600 KB |
Output is correct |
104 |
Correct |
1376 ms |
11456 KB |
Output is correct |
105 |
Correct |
1088 ms |
10924 KB |
Output is correct |
106 |
Correct |
896 ms |
10256 KB |
Output is correct |
107 |
Correct |
744 ms |
11860 KB |
Output is correct |
108 |
Correct |
1369 ms |
11980 KB |
Output is correct |
109 |
Correct |
978 ms |
11008 KB |
Output is correct |