#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);
if (argc > 1) {
assert(freopen(argv[1], "r", stdin));
cerr << "Generating output for: " << argv[1] << "\n";
}
if (argc > 2) {
assert(freopen(argv[2], "wb", stdout));
}
sol();
cerr << "Time elapsed: " << 1000 * clock() / CLOCKS_PER_SEC << "ms\n\n";
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 |
5 ms |
384 KB |
Output is correct |
2 |
Correct |
4 ms |
384 KB |
Output is correct |
3 |
Correct |
21 ms |
896 KB |
Output is correct |
4 |
Correct |
7 ms |
512 KB |
Output is correct |
5 |
Correct |
20 ms |
768 KB |
Output is correct |
6 |
Correct |
17 ms |
768 KB |
Output is correct |
7 |
Correct |
14 ms |
768 KB |
Output is correct |
8 |
Correct |
19 ms |
768 KB |
Output is correct |
9 |
Correct |
14 ms |
768 KB |
Output is correct |
10 |
Correct |
20 ms |
896 KB |
Output is correct |
11 |
Correct |
18 ms |
768 KB |
Output is correct |
12 |
Correct |
22 ms |
896 KB |
Output is correct |
13 |
Correct |
19 ms |
768 KB |
Output is correct |
14 |
Correct |
23 ms |
768 KB |
Output is correct |
15 |
Correct |
19 ms |
768 KB |
Output is correct |
16 |
Correct |
14 ms |
768 KB |
Output is correct |
17 |
Correct |
14 ms |
768 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1071 ms |
9876 KB |
Output is correct |
2 |
Correct |
1044 ms |
9988 KB |
Output is correct |
3 |
Correct |
1054 ms |
9960 KB |
Output is correct |
4 |
Correct |
1031 ms |
9980 KB |
Output is correct |
5 |
Correct |
1052 ms |
9964 KB |
Output is correct |
6 |
Correct |
1193 ms |
10348 KB |
Output is correct |
7 |
Correct |
1203 ms |
10336 KB |
Output is correct |
8 |
Correct |
1236 ms |
10216 KB |
Output is correct |
9 |
Correct |
36 ms |
1920 KB |
Output is correct |
10 |
Correct |
838 ms |
9464 KB |
Output is correct |
11 |
Correct |
815 ms |
9452 KB |
Output is correct |
12 |
Correct |
612 ms |
10852 KB |
Output is correct |
13 |
Correct |
792 ms |
10336 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
901 ms |
8276 KB |
Output is correct |
2 |
Correct |
480 ms |
5140 KB |
Output is correct |
3 |
Correct |
898 ms |
8112 KB |
Output is correct |
4 |
Correct |
872 ms |
8240 KB |
Output is correct |
5 |
Correct |
35 ms |
1912 KB |
Output is correct |
6 |
Correct |
902 ms |
8248 KB |
Output is correct |
7 |
Correct |
811 ms |
8048 KB |
Output is correct |
8 |
Correct |
755 ms |
7980 KB |
Output is correct |
9 |
Correct |
488 ms |
7724 KB |
Output is correct |
10 |
Correct |
469 ms |
7724 KB |
Output is correct |
11 |
Correct |
610 ms |
6760 KB |
Output is correct |
12 |
Correct |
587 ms |
7016 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
643 ms |
14152 KB |
Output is correct |
2 |
Correct |
35 ms |
1912 KB |
Output is correct |
3 |
Correct |
124 ms |
10772 KB |
Output is correct |
4 |
Correct |
108 ms |
10776 KB |
Output is correct |
5 |
Correct |
506 ms |
14176 KB |
Output is correct |
6 |
Correct |
639 ms |
14176 KB |
Output is correct |
7 |
Correct |
498 ms |
14288 KB |
Output is correct |
8 |
Correct |
434 ms |
9788 KB |
Output is correct |
9 |
Correct |
437 ms |
9784 KB |
Output is correct |
10 |
Correct |
431 ms |
10100 KB |
Output is correct |
11 |
Correct |
623 ms |
12416 KB |
Output is correct |
12 |
Correct |
598 ms |
12428 KB |
Output is correct |
13 |
Correct |
604 ms |
12552 KB |
Output is correct |
14 |
Correct |
475 ms |
14292 KB |
Output is correct |
15 |
Correct |
480 ms |
14280 KB |
Output is correct |
16 |
Correct |
699 ms |
14144 KB |
Output is correct |
17 |
Correct |
683 ms |
14092 KB |
Output is correct |
18 |
Correct |
668 ms |
14076 KB |
Output is correct |
19 |
Correct |
683 ms |
14368 KB |
Output is correct |
20 |
Correct |
651 ms |
13256 KB |
Output is correct |
21 |
Correct |
653 ms |
13164 KB |
Output is correct |
22 |
Correct |
653 ms |
13916 KB |
Output is correct |
23 |
Correct |
568 ms |
12880 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1071 ms |
9876 KB |
Output is correct |
2 |
Correct |
1044 ms |
9988 KB |
Output is correct |
3 |
Correct |
1054 ms |
9960 KB |
Output is correct |
4 |
Correct |
1031 ms |
9980 KB |
Output is correct |
5 |
Correct |
1052 ms |
9964 KB |
Output is correct |
6 |
Correct |
1193 ms |
10348 KB |
Output is correct |
7 |
Correct |
1203 ms |
10336 KB |
Output is correct |
8 |
Correct |
1236 ms |
10216 KB |
Output is correct |
9 |
Correct |
36 ms |
1920 KB |
Output is correct |
10 |
Correct |
838 ms |
9464 KB |
Output is correct |
11 |
Correct |
815 ms |
9452 KB |
Output is correct |
12 |
Correct |
612 ms |
10852 KB |
Output is correct |
13 |
Correct |
792 ms |
10336 KB |
Output is correct |
14 |
Correct |
901 ms |
8276 KB |
Output is correct |
15 |
Correct |
480 ms |
5140 KB |
Output is correct |
16 |
Correct |
898 ms |
8112 KB |
Output is correct |
17 |
Correct |
872 ms |
8240 KB |
Output is correct |
18 |
Correct |
35 ms |
1912 KB |
Output is correct |
19 |
Correct |
902 ms |
8248 KB |
Output is correct |
20 |
Correct |
811 ms |
8048 KB |
Output is correct |
21 |
Correct |
755 ms |
7980 KB |
Output is correct |
22 |
Correct |
488 ms |
7724 KB |
Output is correct |
23 |
Correct |
469 ms |
7724 KB |
Output is correct |
24 |
Correct |
610 ms |
6760 KB |
Output is correct |
25 |
Correct |
587 ms |
7016 KB |
Output is correct |
26 |
Correct |
1089 ms |
10496 KB |
Output is correct |
27 |
Correct |
1205 ms |
10368 KB |
Output is correct |
28 |
Correct |
1109 ms |
10720 KB |
Output is correct |
29 |
Correct |
923 ms |
10804 KB |
Output is correct |
30 |
Correct |
1135 ms |
10552 KB |
Output is correct |
31 |
Correct |
1168 ms |
10460 KB |
Output is correct |
32 |
Correct |
1142 ms |
10464 KB |
Output is correct |
33 |
Correct |
1081 ms |
10848 KB |
Output is correct |
34 |
Correct |
1123 ms |
10704 KB |
Output is correct |
35 |
Correct |
1107 ms |
10760 KB |
Output is correct |
36 |
Correct |
952 ms |
10596 KB |
Output is correct |
37 |
Correct |
939 ms |
10404 KB |
Output is correct |
38 |
Correct |
947 ms |
10516 KB |
Output is correct |
39 |
Correct |
589 ms |
11108 KB |
Output is correct |
40 |
Correct |
598 ms |
11116 KB |
Output is correct |
41 |
Correct |
606 ms |
11104 KB |
Output is correct |
42 |
Correct |
704 ms |
10208 KB |
Output is correct |
43 |
Correct |
702 ms |
10352 KB |
Output is correct |
44 |
Correct |
709 ms |
10192 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
384 KB |
Output is correct |
2 |
Correct |
4 ms |
384 KB |
Output is correct |
3 |
Correct |
21 ms |
896 KB |
Output is correct |
4 |
Correct |
7 ms |
512 KB |
Output is correct |
5 |
Correct |
20 ms |
768 KB |
Output is correct |
6 |
Correct |
17 ms |
768 KB |
Output is correct |
7 |
Correct |
14 ms |
768 KB |
Output is correct |
8 |
Correct |
19 ms |
768 KB |
Output is correct |
9 |
Correct |
14 ms |
768 KB |
Output is correct |
10 |
Correct |
20 ms |
896 KB |
Output is correct |
11 |
Correct |
18 ms |
768 KB |
Output is correct |
12 |
Correct |
22 ms |
896 KB |
Output is correct |
13 |
Correct |
19 ms |
768 KB |
Output is correct |
14 |
Correct |
23 ms |
768 KB |
Output is correct |
15 |
Correct |
19 ms |
768 KB |
Output is correct |
16 |
Correct |
14 ms |
768 KB |
Output is correct |
17 |
Correct |
14 ms |
768 KB |
Output is correct |
18 |
Correct |
1071 ms |
9876 KB |
Output is correct |
19 |
Correct |
1044 ms |
9988 KB |
Output is correct |
20 |
Correct |
1054 ms |
9960 KB |
Output is correct |
21 |
Correct |
1031 ms |
9980 KB |
Output is correct |
22 |
Correct |
1052 ms |
9964 KB |
Output is correct |
23 |
Correct |
1193 ms |
10348 KB |
Output is correct |
24 |
Correct |
1203 ms |
10336 KB |
Output is correct |
25 |
Correct |
1236 ms |
10216 KB |
Output is correct |
26 |
Correct |
36 ms |
1920 KB |
Output is correct |
27 |
Correct |
838 ms |
9464 KB |
Output is correct |
28 |
Correct |
815 ms |
9452 KB |
Output is correct |
29 |
Correct |
612 ms |
10852 KB |
Output is correct |
30 |
Correct |
792 ms |
10336 KB |
Output is correct |
31 |
Correct |
901 ms |
8276 KB |
Output is correct |
32 |
Correct |
480 ms |
5140 KB |
Output is correct |
33 |
Correct |
898 ms |
8112 KB |
Output is correct |
34 |
Correct |
872 ms |
8240 KB |
Output is correct |
35 |
Correct |
35 ms |
1912 KB |
Output is correct |
36 |
Correct |
902 ms |
8248 KB |
Output is correct |
37 |
Correct |
811 ms |
8048 KB |
Output is correct |
38 |
Correct |
755 ms |
7980 KB |
Output is correct |
39 |
Correct |
488 ms |
7724 KB |
Output is correct |
40 |
Correct |
469 ms |
7724 KB |
Output is correct |
41 |
Correct |
610 ms |
6760 KB |
Output is correct |
42 |
Correct |
587 ms |
7016 KB |
Output is correct |
43 |
Correct |
643 ms |
14152 KB |
Output is correct |
44 |
Correct |
35 ms |
1912 KB |
Output is correct |
45 |
Correct |
124 ms |
10772 KB |
Output is correct |
46 |
Correct |
108 ms |
10776 KB |
Output is correct |
47 |
Correct |
506 ms |
14176 KB |
Output is correct |
48 |
Correct |
639 ms |
14176 KB |
Output is correct |
49 |
Correct |
498 ms |
14288 KB |
Output is correct |
50 |
Correct |
434 ms |
9788 KB |
Output is correct |
51 |
Correct |
437 ms |
9784 KB |
Output is correct |
52 |
Correct |
431 ms |
10100 KB |
Output is correct |
53 |
Correct |
623 ms |
12416 KB |
Output is correct |
54 |
Correct |
598 ms |
12428 KB |
Output is correct |
55 |
Correct |
604 ms |
12552 KB |
Output is correct |
56 |
Correct |
475 ms |
14292 KB |
Output is correct |
57 |
Correct |
480 ms |
14280 KB |
Output is correct |
58 |
Correct |
699 ms |
14144 KB |
Output is correct |
59 |
Correct |
683 ms |
14092 KB |
Output is correct |
60 |
Correct |
668 ms |
14076 KB |
Output is correct |
61 |
Correct |
683 ms |
14368 KB |
Output is correct |
62 |
Correct |
651 ms |
13256 KB |
Output is correct |
63 |
Correct |
653 ms |
13164 KB |
Output is correct |
64 |
Correct |
653 ms |
13916 KB |
Output is correct |
65 |
Correct |
568 ms |
12880 KB |
Output is correct |
66 |
Correct |
1089 ms |
10496 KB |
Output is correct |
67 |
Correct |
1205 ms |
10368 KB |
Output is correct |
68 |
Correct |
1109 ms |
10720 KB |
Output is correct |
69 |
Correct |
923 ms |
10804 KB |
Output is correct |
70 |
Correct |
1135 ms |
10552 KB |
Output is correct |
71 |
Correct |
1168 ms |
10460 KB |
Output is correct |
72 |
Correct |
1142 ms |
10464 KB |
Output is correct |
73 |
Correct |
1081 ms |
10848 KB |
Output is correct |
74 |
Correct |
1123 ms |
10704 KB |
Output is correct |
75 |
Correct |
1107 ms |
10760 KB |
Output is correct |
76 |
Correct |
952 ms |
10596 KB |
Output is correct |
77 |
Correct |
939 ms |
10404 KB |
Output is correct |
78 |
Correct |
947 ms |
10516 KB |
Output is correct |
79 |
Correct |
589 ms |
11108 KB |
Output is correct |
80 |
Correct |
598 ms |
11116 KB |
Output is correct |
81 |
Correct |
606 ms |
11104 KB |
Output is correct |
82 |
Correct |
704 ms |
10208 KB |
Output is correct |
83 |
Correct |
702 ms |
10352 KB |
Output is correct |
84 |
Correct |
709 ms |
10192 KB |
Output is correct |
85 |
Correct |
1409 ms |
16360 KB |
Output is correct |
86 |
Correct |
165 ms |
11196 KB |
Output is correct |
87 |
Correct |
148 ms |
11348 KB |
Output is correct |
88 |
Correct |
1054 ms |
14592 KB |
Output is correct |
89 |
Correct |
1406 ms |
16164 KB |
Output is correct |
90 |
Correct |
1058 ms |
14756 KB |
Output is correct |
91 |
Correct |
1086 ms |
10728 KB |
Output is correct |
92 |
Correct |
1107 ms |
10696 KB |
Output is correct |
93 |
Correct |
1240 ms |
10676 KB |
Output is correct |
94 |
Correct |
1294 ms |
13908 KB |
Output is correct |
95 |
Correct |
1334 ms |
14040 KB |
Output is correct |
96 |
Correct |
1503 ms |
14152 KB |
Output is correct |
97 |
Correct |
667 ms |
15064 KB |
Output is correct |
98 |
Correct |
867 ms |
14348 KB |
Output is correct |
99 |
Correct |
1436 ms |
16144 KB |
Output is correct |
100 |
Correct |
1439 ms |
15972 KB |
Output is correct |
101 |
Correct |
1457 ms |
16308 KB |
Output is correct |
102 |
Correct |
1438 ms |
16136 KB |
Output is correct |
103 |
Correct |
1543 ms |
14764 KB |
Output is correct |
104 |
Correct |
1488 ms |
14728 KB |
Output is correct |
105 |
Correct |
1211 ms |
14232 KB |
Output is correct |
106 |
Correct |
1022 ms |
13456 KB |
Output is correct |
107 |
Correct |
914 ms |
14996 KB |
Output is correct |
108 |
Correct |
1584 ms |
15572 KB |
Output is correct |
109 |
Correct |
1294 ms |
13332 KB |
Output is correct |