#include <bits/stdc++.h>
using namespace std;
const int N = 50057;
const int M = 100123;
const int B = 500;
int n, m;
int a[M], b[M], c[M];
int Q;
int t[M], x[M], y[M];
int dsu[N];
int sz[N];
vector<int> g[N];
bool used[N];
int ans[M];
int e[M];
bool inb[M];
bool was[M];
int q[N];
int get(int i) {
return i == dsu[i] ? i : dsu[i] = get(dsu[i]);
}
void merge(int i, int j) {
i = get(i);
j = get(j);
if (i == j)
return;
if (sz[i] > sz[j])
swap(i, j);
sz[j] += sz[i];
dsu[i] = j;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> m;
for (int i = 0; i < m; ++i) {
cin >> a[i] >> b[i] >> c[i];
--a[i];
--b[i];
}
vector<int> ord(m);
iota(ord.begin(), ord.end(), 0);
sort(begin(ord), end(ord), [&](const int &i, const int &j) {
return c[i] > c[j];
});
cin >> Q;
for (int i = 0; i < Q; ++i) {
cin >> t[i] >> x[i] >> y[i];
--x[i];
}
for (int bl = 0; bl < Q; bl += B) {
int br = min(Q, bl + B);
for (int i = bl; i < br; ++i) {
if (t[i] == 1)
inb[x[i]] = true;
}
int esz = 0;
for (int i : ord) {
if (!inb[i])
e[esz++] = i;
}
vector<int> p;
for (int i = bl; i < br; ++i) {
if (t[i] == 2)
p.push_back(i);
}
sort(begin(p), end(p), [&](const int &i, const int &j) {
return y[i] > y[j];
});
for (int i = 0; i < n; ++i) {
dsu[i] = i;
sz[i] = 1;
}
int eptr = 0;
for (int i : p) {
while (eptr < esz && c[e[eptr]] >= y[i]) {
merge(a[e[eptr]], b[e[eptr]]);
++eptr;
}
// cout << "i " << i << endl;
for (int j = i - 1; j >= bl; --j) {
if (t[j] == 1 && !was[x[j]]) {
if (y[j] >= y[i]) {
// cout << "add1 " << j << " " << a[x[j]] << " " << b[x[j]] << " " << y[j] << endl;
g[get(a[x[j]])].emplace_back(get(b[x[j]]));
g[get(b[x[j]])].emplace_back(get(a[x[j]]));
}
was[x[j]] = true;
}
}
for (int j = br - 1; j > i; --j) {
if (t[j] == 1 && !was[x[j]]) {
if (c[x[j]] >= y[i]) {
// cout << "add2 " << j << " " << x[j] << " " << a[x[j]] << " " << b[x[j]] << " " << c[x[j]] << endl;
g[get(a[x[j]])].emplace_back(get(b[x[j]]));
g[get(b[x[j]])].emplace_back(get(a[x[j]]));
}
was[x[j]] = true;
}
}
int qh = 0, qt = 0;
q[qt++] = get(x[i]);
used[get(x[i])] = true;
while (qh < qt) {
int v = q[qh++];
ans[i] += sz[v];
for (int u : g[v]) {
if (!used[u]) {
used[u] = true;
q[qt++] = u;
}
}
}
used[get(x[i])] = false;
for (int j = i - 1; j >= bl; --j) {
if (t[j] == 1 && was[x[j]]) {
// if (y[j] >= y[i]) {
// cout << "remove1 " << j << " " << a[x[j]] << " " << b[x[j]] << " " << y[j] << endl;
used[get(a[x[j]])] = false;
used[get(b[x[j]])] = false;
g[get(a[x[j]])].clear();
g[get(b[x[j]])].clear();
// }
was[x[j]] = false;
}
}
for (int j = br - 1; j > i; --j) {
if (t[j] == 1 && was[x[j]]) {
// if (c[x[j]] >= y[i]) {
// cout << "remove2 " << j << " " << a[x[j]] << " " << b[x[j]] << " " << c[x[j]] << endl;
used[get(a[x[j]])] = false;
used[get(b[x[j]])] = false;
g[get(a[x[j]])].clear();
g[get(b[x[j]])].clear();
// }
was[x[j]] = false;
}
}
}
for (int i = bl; i < br; ++i) {
if (t[i] == 1) {
inb[x[i]] = false;
c[x[i]] = y[i];
}
}
sort(ord.begin(), ord.end(), [&](const int &i, const int &j) {
return c[i] > c[j];
});
}
for (int i = 0; i < Q; ++i) {
if (t[i] == 2) {
cout << ans[i] << "\n";
}
}
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
1492 KB |
Output is correct |
2 |
Correct |
1 ms |
1492 KB |
Output is correct |
3 |
Correct |
55 ms |
1760 KB |
Output is correct |
4 |
Correct |
12 ms |
1684 KB |
Output is correct |
5 |
Correct |
36 ms |
1732 KB |
Output is correct |
6 |
Correct |
33 ms |
1728 KB |
Output is correct |
7 |
Correct |
37 ms |
1712 KB |
Output is correct |
8 |
Correct |
36 ms |
1708 KB |
Output is correct |
9 |
Correct |
39 ms |
1708 KB |
Output is correct |
10 |
Correct |
37 ms |
1708 KB |
Output is correct |
11 |
Correct |
35 ms |
1712 KB |
Output is correct |
12 |
Correct |
37 ms |
1716 KB |
Output is correct |
13 |
Correct |
43 ms |
1712 KB |
Output is correct |
14 |
Correct |
41 ms |
1704 KB |
Output is correct |
15 |
Correct |
40 ms |
1824 KB |
Output is correct |
16 |
Correct |
37 ms |
1856 KB |
Output is correct |
17 |
Correct |
37 ms |
1620 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1782 ms |
5932 KB |
Output is correct |
2 |
Correct |
1727 ms |
6036 KB |
Output is correct |
3 |
Correct |
1695 ms |
6180 KB |
Output is correct |
4 |
Correct |
1742 ms |
6168 KB |
Output is correct |
5 |
Correct |
1737 ms |
5980 KB |
Output is correct |
6 |
Correct |
2166 ms |
5336 KB |
Output is correct |
7 |
Correct |
2103 ms |
5384 KB |
Output is correct |
8 |
Correct |
2093 ms |
5240 KB |
Output is correct |
9 |
Correct |
99 ms |
3196 KB |
Output is correct |
10 |
Correct |
1537 ms |
6064 KB |
Output is correct |
11 |
Correct |
1449 ms |
5980 KB |
Output is correct |
12 |
Correct |
1276 ms |
5460 KB |
Output is correct |
13 |
Correct |
1226 ms |
5384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1465 ms |
5428 KB |
Output is correct |
2 |
Correct |
1022 ms |
3904 KB |
Output is correct |
3 |
Correct |
1627 ms |
5384 KB |
Output is correct |
4 |
Correct |
1504 ms |
5136 KB |
Output is correct |
5 |
Correct |
110 ms |
3204 KB |
Output is correct |
6 |
Correct |
1583 ms |
5048 KB |
Output is correct |
7 |
Correct |
1477 ms |
5104 KB |
Output is correct |
8 |
Correct |
1366 ms |
5164 KB |
Output is correct |
9 |
Correct |
989 ms |
4768 KB |
Output is correct |
10 |
Correct |
941 ms |
4772 KB |
Output is correct |
11 |
Correct |
965 ms |
5064 KB |
Output is correct |
12 |
Correct |
889 ms |
5140 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1408 ms |
5884 KB |
Output is correct |
2 |
Correct |
123 ms |
3224 KB |
Output is correct |
3 |
Correct |
132 ms |
3644 KB |
Output is correct |
4 |
Correct |
88 ms |
3620 KB |
Output is correct |
5 |
Correct |
1102 ms |
5848 KB |
Output is correct |
6 |
Correct |
1389 ms |
5848 KB |
Output is correct |
7 |
Correct |
1067 ms |
5848 KB |
Output is correct |
8 |
Correct |
800 ms |
4612 KB |
Output is correct |
9 |
Correct |
783 ms |
4824 KB |
Output is correct |
10 |
Correct |
737 ms |
4800 KB |
Output is correct |
11 |
Correct |
1064 ms |
5272 KB |
Output is correct |
12 |
Correct |
1081 ms |
5428 KB |
Output is correct |
13 |
Correct |
1059 ms |
5404 KB |
Output is correct |
14 |
Correct |
860 ms |
5964 KB |
Output is correct |
15 |
Correct |
877 ms |
5964 KB |
Output is correct |
16 |
Correct |
1336 ms |
5836 KB |
Output is correct |
17 |
Correct |
1337 ms |
5864 KB |
Output is correct |
18 |
Correct |
1287 ms |
5812 KB |
Output is correct |
19 |
Correct |
1269 ms |
5956 KB |
Output is correct |
20 |
Correct |
1201 ms |
5856 KB |
Output is correct |
21 |
Correct |
1185 ms |
5904 KB |
Output is correct |
22 |
Correct |
1234 ms |
6112 KB |
Output is correct |
23 |
Correct |
990 ms |
6004 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1782 ms |
5932 KB |
Output is correct |
2 |
Correct |
1727 ms |
6036 KB |
Output is correct |
3 |
Correct |
1695 ms |
6180 KB |
Output is correct |
4 |
Correct |
1742 ms |
6168 KB |
Output is correct |
5 |
Correct |
1737 ms |
5980 KB |
Output is correct |
6 |
Correct |
2166 ms |
5336 KB |
Output is correct |
7 |
Correct |
2103 ms |
5384 KB |
Output is correct |
8 |
Correct |
2093 ms |
5240 KB |
Output is correct |
9 |
Correct |
99 ms |
3196 KB |
Output is correct |
10 |
Correct |
1537 ms |
6064 KB |
Output is correct |
11 |
Correct |
1449 ms |
5980 KB |
Output is correct |
12 |
Correct |
1276 ms |
5460 KB |
Output is correct |
13 |
Correct |
1226 ms |
5384 KB |
Output is correct |
14 |
Correct |
1465 ms |
5428 KB |
Output is correct |
15 |
Correct |
1022 ms |
3904 KB |
Output is correct |
16 |
Correct |
1627 ms |
5384 KB |
Output is correct |
17 |
Correct |
1504 ms |
5136 KB |
Output is correct |
18 |
Correct |
110 ms |
3204 KB |
Output is correct |
19 |
Correct |
1583 ms |
5048 KB |
Output is correct |
20 |
Correct |
1477 ms |
5104 KB |
Output is correct |
21 |
Correct |
1366 ms |
5164 KB |
Output is correct |
22 |
Correct |
989 ms |
4768 KB |
Output is correct |
23 |
Correct |
941 ms |
4772 KB |
Output is correct |
24 |
Correct |
965 ms |
5064 KB |
Output is correct |
25 |
Correct |
889 ms |
5140 KB |
Output is correct |
26 |
Correct |
1900 ms |
6248 KB |
Output is correct |
27 |
Correct |
1991 ms |
6160 KB |
Output is correct |
28 |
Correct |
1882 ms |
5996 KB |
Output is correct |
29 |
Correct |
1629 ms |
6208 KB |
Output is correct |
30 |
Correct |
2095 ms |
6188 KB |
Output is correct |
31 |
Correct |
2116 ms |
6084 KB |
Output is correct |
32 |
Correct |
2082 ms |
6356 KB |
Output is correct |
33 |
Correct |
1920 ms |
6348 KB |
Output is correct |
34 |
Correct |
1911 ms |
6056 KB |
Output is correct |
35 |
Correct |
1926 ms |
6164 KB |
Output is correct |
36 |
Correct |
1667 ms |
6120 KB |
Output is correct |
37 |
Correct |
1657 ms |
6196 KB |
Output is correct |
38 |
Correct |
1633 ms |
6112 KB |
Output is correct |
39 |
Correct |
1258 ms |
5568 KB |
Output is correct |
40 |
Correct |
1226 ms |
5552 KB |
Output is correct |
41 |
Correct |
1230 ms |
5476 KB |
Output is correct |
42 |
Correct |
1128 ms |
6296 KB |
Output is correct |
43 |
Correct |
1143 ms |
6352 KB |
Output is correct |
44 |
Correct |
1139 ms |
6216 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
1492 KB |
Output is correct |
2 |
Correct |
1 ms |
1492 KB |
Output is correct |
3 |
Correct |
55 ms |
1760 KB |
Output is correct |
4 |
Correct |
12 ms |
1684 KB |
Output is correct |
5 |
Correct |
36 ms |
1732 KB |
Output is correct |
6 |
Correct |
33 ms |
1728 KB |
Output is correct |
7 |
Correct |
37 ms |
1712 KB |
Output is correct |
8 |
Correct |
36 ms |
1708 KB |
Output is correct |
9 |
Correct |
39 ms |
1708 KB |
Output is correct |
10 |
Correct |
37 ms |
1708 KB |
Output is correct |
11 |
Correct |
35 ms |
1712 KB |
Output is correct |
12 |
Correct |
37 ms |
1716 KB |
Output is correct |
13 |
Correct |
43 ms |
1712 KB |
Output is correct |
14 |
Correct |
41 ms |
1704 KB |
Output is correct |
15 |
Correct |
40 ms |
1824 KB |
Output is correct |
16 |
Correct |
37 ms |
1856 KB |
Output is correct |
17 |
Correct |
37 ms |
1620 KB |
Output is correct |
18 |
Correct |
1782 ms |
5932 KB |
Output is correct |
19 |
Correct |
1727 ms |
6036 KB |
Output is correct |
20 |
Correct |
1695 ms |
6180 KB |
Output is correct |
21 |
Correct |
1742 ms |
6168 KB |
Output is correct |
22 |
Correct |
1737 ms |
5980 KB |
Output is correct |
23 |
Correct |
2166 ms |
5336 KB |
Output is correct |
24 |
Correct |
2103 ms |
5384 KB |
Output is correct |
25 |
Correct |
2093 ms |
5240 KB |
Output is correct |
26 |
Correct |
99 ms |
3196 KB |
Output is correct |
27 |
Correct |
1537 ms |
6064 KB |
Output is correct |
28 |
Correct |
1449 ms |
5980 KB |
Output is correct |
29 |
Correct |
1276 ms |
5460 KB |
Output is correct |
30 |
Correct |
1226 ms |
5384 KB |
Output is correct |
31 |
Correct |
1465 ms |
5428 KB |
Output is correct |
32 |
Correct |
1022 ms |
3904 KB |
Output is correct |
33 |
Correct |
1627 ms |
5384 KB |
Output is correct |
34 |
Correct |
1504 ms |
5136 KB |
Output is correct |
35 |
Correct |
110 ms |
3204 KB |
Output is correct |
36 |
Correct |
1583 ms |
5048 KB |
Output is correct |
37 |
Correct |
1477 ms |
5104 KB |
Output is correct |
38 |
Correct |
1366 ms |
5164 KB |
Output is correct |
39 |
Correct |
989 ms |
4768 KB |
Output is correct |
40 |
Correct |
941 ms |
4772 KB |
Output is correct |
41 |
Correct |
965 ms |
5064 KB |
Output is correct |
42 |
Correct |
889 ms |
5140 KB |
Output is correct |
43 |
Correct |
1408 ms |
5884 KB |
Output is correct |
44 |
Correct |
123 ms |
3224 KB |
Output is correct |
45 |
Correct |
132 ms |
3644 KB |
Output is correct |
46 |
Correct |
88 ms |
3620 KB |
Output is correct |
47 |
Correct |
1102 ms |
5848 KB |
Output is correct |
48 |
Correct |
1389 ms |
5848 KB |
Output is correct |
49 |
Correct |
1067 ms |
5848 KB |
Output is correct |
50 |
Correct |
800 ms |
4612 KB |
Output is correct |
51 |
Correct |
783 ms |
4824 KB |
Output is correct |
52 |
Correct |
737 ms |
4800 KB |
Output is correct |
53 |
Correct |
1064 ms |
5272 KB |
Output is correct |
54 |
Correct |
1081 ms |
5428 KB |
Output is correct |
55 |
Correct |
1059 ms |
5404 KB |
Output is correct |
56 |
Correct |
860 ms |
5964 KB |
Output is correct |
57 |
Correct |
877 ms |
5964 KB |
Output is correct |
58 |
Correct |
1336 ms |
5836 KB |
Output is correct |
59 |
Correct |
1337 ms |
5864 KB |
Output is correct |
60 |
Correct |
1287 ms |
5812 KB |
Output is correct |
61 |
Correct |
1269 ms |
5956 KB |
Output is correct |
62 |
Correct |
1201 ms |
5856 KB |
Output is correct |
63 |
Correct |
1185 ms |
5904 KB |
Output is correct |
64 |
Correct |
1234 ms |
6112 KB |
Output is correct |
65 |
Correct |
990 ms |
6004 KB |
Output is correct |
66 |
Correct |
1900 ms |
6248 KB |
Output is correct |
67 |
Correct |
1991 ms |
6160 KB |
Output is correct |
68 |
Correct |
1882 ms |
5996 KB |
Output is correct |
69 |
Correct |
1629 ms |
6208 KB |
Output is correct |
70 |
Correct |
2095 ms |
6188 KB |
Output is correct |
71 |
Correct |
2116 ms |
6084 KB |
Output is correct |
72 |
Correct |
2082 ms |
6356 KB |
Output is correct |
73 |
Correct |
1920 ms |
6348 KB |
Output is correct |
74 |
Correct |
1911 ms |
6056 KB |
Output is correct |
75 |
Correct |
1926 ms |
6164 KB |
Output is correct |
76 |
Correct |
1667 ms |
6120 KB |
Output is correct |
77 |
Correct |
1657 ms |
6196 KB |
Output is correct |
78 |
Correct |
1633 ms |
6112 KB |
Output is correct |
79 |
Correct |
1258 ms |
5568 KB |
Output is correct |
80 |
Correct |
1226 ms |
5552 KB |
Output is correct |
81 |
Correct |
1230 ms |
5476 KB |
Output is correct |
82 |
Correct |
1128 ms |
6296 KB |
Output is correct |
83 |
Correct |
1143 ms |
6352 KB |
Output is correct |
84 |
Correct |
1139 ms |
6216 KB |
Output is correct |
85 |
Correct |
2752 ms |
7088 KB |
Output is correct |
86 |
Correct |
244 ms |
5704 KB |
Output is correct |
87 |
Correct |
156 ms |
5816 KB |
Output is correct |
88 |
Correct |
1766 ms |
9164 KB |
Output is correct |
89 |
Correct |
2778 ms |
10848 KB |
Output is correct |
90 |
Correct |
1747 ms |
8864 KB |
Output is correct |
91 |
Correct |
1967 ms |
8940 KB |
Output is correct |
92 |
Correct |
1920 ms |
8860 KB |
Output is correct |
93 |
Correct |
2223 ms |
7940 KB |
Output is correct |
94 |
Correct |
2381 ms |
9788 KB |
Output is correct |
95 |
Correct |
2477 ms |
10124 KB |
Output is correct |
96 |
Correct |
2467 ms |
8732 KB |
Output is correct |
97 |
Correct |
1164 ms |
8520 KB |
Output is correct |
98 |
Correct |
1241 ms |
9020 KB |
Output is correct |
99 |
Correct |
2775 ms |
10780 KB |
Output is correct |
100 |
Correct |
2797 ms |
10608 KB |
Output is correct |
101 |
Correct |
2874 ms |
10912 KB |
Output is correct |
102 |
Correct |
2856 ms |
10764 KB |
Output is correct |
103 |
Correct |
2561 ms |
8964 KB |
Output is correct |
104 |
Correct |
2556 ms |
9204 KB |
Output is correct |
105 |
Correct |
1908 ms |
9148 KB |
Output is correct |
106 |
Correct |
1535 ms |
9200 KB |
Output is correct |
107 |
Correct |
1939 ms |
8864 KB |
Output is correct |
108 |
Correct |
2709 ms |
9620 KB |
Output is correct |
109 |
Correct |
1793 ms |
7608 KB |
Output is correct |