#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int,int>
#define pll pair<ll,ll>
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define eb emplace_back
#define all(vr) vr.begin(),vr.end()
#define vi vector<int>
#define vll vector<ll>
const int N = 1e5 + 10;
const int block = 400;
struct query {int tp, x, y;};
int n, m, q, d[N], mark[N], ans[N], p[N], sz[N];
pii E[N];
query Q[N];
vi ad[N];
bool cmp(int x, int y) { return d[x] > d[y];}
bool cmp2(int x, int y) { return Q[x].y > Q[y].y;}
int find_root(int u) { return p[u] > 0 ? (p[u] = find_root(p[u])) : u;}
void merg(int u, int v)
{
if (u==v) return;
if (p[u] > p[v]) swap(u, v);
if (p[u] == p[v]) --p[u];
p[v] = u;
sz[u] += sz[v];
}
vi G[N];
int vis[N], res;
void dfs(int u)
{
vis[u] = 1;
res += sz[u];
for (int v : G[u])
if (!vis[v]) dfs(v);
}
int main()
{
//freopen("ss.inp", "r", stdin);
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> m;
for (int i = 1; i <= m; ++i) cin >> E[i].fi >> E[i].se >> d[i];
cin >> q;
for (int i = 1; i <= q; ++i) cin >> Q[i].tp >> Q[i].x >> Q[i].y;
vi sorted_E;
for (int i = 1; i <= m; ++i) sorted_E.eb(i);
sort(all(sorted_E), cmp);
for (int i = 1; i <= q; ++i) ad[i].reserve(block);
vi normal_edge;
normal_edge.reserve(m);
for (int sta = 1; sta <= q; sta += block)
{
int en = min(sta + block - 1, q);
vi spe_edge, Q2;
for (int i = sta; i <= en; ++i)
if (Q[i].tp == 1)
{
if (!mark[Q[i].x]) mark[Q[i].x] = 1, spe_edge.eb(Q[i].x);
}
else Q2.eb(i);
for (int i = sta; i <= en; ++i)
if (Q[i].tp == 1) d[Q[i].x] = Q[i].y;
else
{
for (int x : spe_edge)
if (d[x] >= Q[i].y) ad[i].eb(x);
}
sort(all(Q2), cmp2);
normal_edge.clear();
for (int i : sorted_E)
if (!mark[i]) normal_edge.eb(i);
else mark[i] = 0;
for (int i = 1; i <= n; ++i) p[i] = 0, sz[i] = 1;
int j = 0;
for (int id : Q2)
{
while (j < (int)normal_edge.size() && d[normal_edge[j]] >= Q[id].y)
{
pii pa = E[normal_edge[j]];
merg(find_root(pa.fi), find_root(pa.se));
++j;
}
stack<int> st;
for (int i : ad[id])
{
int u = find_root(E[i].fi);
int v = find_root(E[i].se);
if (u != v)
{
G[u].eb(v);
G[v].eb(u);
st.push(u);
st.push(v);
}
}
res = 0;
dfs(find_root(Q[id].x));
vis[find_root(Q[id].x)] = 0;
ans[id] = res;
while (!st.empty()) G[st.top()].clear(), vis[st.top()] = 0, st.pop();
}
sort(all(spe_edge), cmp);
merge(all(normal_edge), all(spe_edge), sorted_E.begin(), cmp);
}
for (int i = 1; i <= q; ++i)
if (Q[i].tp == 2) cout << ans[i] << "\n";
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
5124 KB |
Output is correct |
2 |
Correct |
4 ms |
5068 KB |
Output is correct |
3 |
Correct |
27 ms |
21032 KB |
Output is correct |
4 |
Correct |
16 ms |
21172 KB |
Output is correct |
5 |
Correct |
27 ms |
21168 KB |
Output is correct |
6 |
Correct |
25 ms |
21196 KB |
Output is correct |
7 |
Correct |
28 ms |
21068 KB |
Output is correct |
8 |
Correct |
27 ms |
21152 KB |
Output is correct |
9 |
Correct |
43 ms |
21076 KB |
Output is correct |
10 |
Correct |
28 ms |
21068 KB |
Output is correct |
11 |
Correct |
26 ms |
21196 KB |
Output is correct |
12 |
Correct |
29 ms |
21132 KB |
Output is correct |
13 |
Correct |
33 ms |
21132 KB |
Output is correct |
14 |
Correct |
34 ms |
21164 KB |
Output is correct |
15 |
Correct |
29 ms |
21196 KB |
Output is correct |
16 |
Correct |
36 ms |
21084 KB |
Output is correct |
17 |
Correct |
31 ms |
21060 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1159 ms |
167916 KB |
Output is correct |
2 |
Correct |
1201 ms |
170748 KB |
Output is correct |
3 |
Correct |
1178 ms |
170564 KB |
Output is correct |
4 |
Correct |
1198 ms |
170700 KB |
Output is correct |
5 |
Correct |
1155 ms |
170752 KB |
Output is correct |
6 |
Correct |
1614 ms |
169580 KB |
Output is correct |
7 |
Correct |
1476 ms |
169712 KB |
Output is correct |
8 |
Correct |
1451 ms |
169704 KB |
Output is correct |
9 |
Correct |
131 ms |
166212 KB |
Output is correct |
10 |
Correct |
1256 ms |
169316 KB |
Output is correct |
11 |
Correct |
1141 ms |
169568 KB |
Output is correct |
12 |
Correct |
974 ms |
169556 KB |
Output is correct |
13 |
Correct |
1000 ms |
169840 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
914 ms |
166852 KB |
Output is correct |
2 |
Correct |
701 ms |
166956 KB |
Output is correct |
3 |
Correct |
1056 ms |
169096 KB |
Output is correct |
4 |
Correct |
881 ms |
169256 KB |
Output is correct |
5 |
Correct |
133 ms |
166212 KB |
Output is correct |
6 |
Correct |
973 ms |
169128 KB |
Output is correct |
7 |
Correct |
819 ms |
169180 KB |
Output is correct |
8 |
Correct |
724 ms |
169124 KB |
Output is correct |
9 |
Correct |
648 ms |
168840 KB |
Output is correct |
10 |
Correct |
606 ms |
168712 KB |
Output is correct |
11 |
Correct |
667 ms |
169324 KB |
Output is correct |
12 |
Correct |
597 ms |
169216 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1329 ms |
167688 KB |
Output is correct |
2 |
Correct |
129 ms |
164804 KB |
Output is correct |
3 |
Correct |
130 ms |
22968 KB |
Output is correct |
4 |
Correct |
101 ms |
22980 KB |
Output is correct |
5 |
Correct |
1061 ms |
167744 KB |
Output is correct |
6 |
Correct |
1272 ms |
167636 KB |
Output is correct |
7 |
Correct |
1111 ms |
167752 KB |
Output is correct |
8 |
Correct |
775 ms |
166576 KB |
Output is correct |
9 |
Correct |
759 ms |
166500 KB |
Output is correct |
10 |
Correct |
788 ms |
166728 KB |
Output is correct |
11 |
Correct |
1310 ms |
167112 KB |
Output is correct |
12 |
Correct |
1212 ms |
167012 KB |
Output is correct |
13 |
Correct |
1240 ms |
167312 KB |
Output is correct |
14 |
Correct |
983 ms |
167784 KB |
Output is correct |
15 |
Correct |
1014 ms |
167828 KB |
Output is correct |
16 |
Correct |
1475 ms |
167812 KB |
Output is correct |
17 |
Correct |
1470 ms |
167736 KB |
Output is correct |
18 |
Correct |
1447 ms |
167852 KB |
Output is correct |
19 |
Correct |
1471 ms |
167744 KB |
Output is correct |
20 |
Correct |
1388 ms |
167408 KB |
Output is correct |
21 |
Correct |
1396 ms |
167616 KB |
Output is correct |
22 |
Correct |
1407 ms |
167804 KB |
Output is correct |
23 |
Correct |
1195 ms |
167552 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1159 ms |
167916 KB |
Output is correct |
2 |
Correct |
1201 ms |
170748 KB |
Output is correct |
3 |
Correct |
1178 ms |
170564 KB |
Output is correct |
4 |
Correct |
1198 ms |
170700 KB |
Output is correct |
5 |
Correct |
1155 ms |
170752 KB |
Output is correct |
6 |
Correct |
1614 ms |
169580 KB |
Output is correct |
7 |
Correct |
1476 ms |
169712 KB |
Output is correct |
8 |
Correct |
1451 ms |
169704 KB |
Output is correct |
9 |
Correct |
131 ms |
166212 KB |
Output is correct |
10 |
Correct |
1256 ms |
169316 KB |
Output is correct |
11 |
Correct |
1141 ms |
169568 KB |
Output is correct |
12 |
Correct |
974 ms |
169556 KB |
Output is correct |
13 |
Correct |
1000 ms |
169840 KB |
Output is correct |
14 |
Correct |
914 ms |
166852 KB |
Output is correct |
15 |
Correct |
701 ms |
166956 KB |
Output is correct |
16 |
Correct |
1056 ms |
169096 KB |
Output is correct |
17 |
Correct |
881 ms |
169256 KB |
Output is correct |
18 |
Correct |
133 ms |
166212 KB |
Output is correct |
19 |
Correct |
973 ms |
169128 KB |
Output is correct |
20 |
Correct |
819 ms |
169180 KB |
Output is correct |
21 |
Correct |
724 ms |
169124 KB |
Output is correct |
22 |
Correct |
648 ms |
168840 KB |
Output is correct |
23 |
Correct |
606 ms |
168712 KB |
Output is correct |
24 |
Correct |
667 ms |
169324 KB |
Output is correct |
25 |
Correct |
597 ms |
169216 KB |
Output is correct |
26 |
Correct |
1118 ms |
170544 KB |
Output is correct |
27 |
Correct |
1413 ms |
170544 KB |
Output is correct |
28 |
Correct |
1261 ms |
170728 KB |
Output is correct |
29 |
Correct |
963 ms |
170548 KB |
Output is correct |
30 |
Correct |
1388 ms |
170400 KB |
Output is correct |
31 |
Correct |
1367 ms |
170560 KB |
Output is correct |
32 |
Correct |
1391 ms |
170660 KB |
Output is correct |
33 |
Correct |
1198 ms |
170712 KB |
Output is correct |
34 |
Correct |
1206 ms |
170688 KB |
Output is correct |
35 |
Correct |
1250 ms |
170580 KB |
Output is correct |
36 |
Correct |
997 ms |
170488 KB |
Output is correct |
37 |
Correct |
973 ms |
170440 KB |
Output is correct |
38 |
Correct |
980 ms |
170476 KB |
Output is correct |
39 |
Correct |
889 ms |
169988 KB |
Output is correct |
40 |
Correct |
840 ms |
169852 KB |
Output is correct |
41 |
Correct |
853 ms |
169928 KB |
Output is correct |
42 |
Correct |
788 ms |
170576 KB |
Output is correct |
43 |
Correct |
813 ms |
170600 KB |
Output is correct |
44 |
Correct |
801 ms |
170764 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
5124 KB |
Output is correct |
2 |
Correct |
4 ms |
5068 KB |
Output is correct |
3 |
Correct |
27 ms |
21032 KB |
Output is correct |
4 |
Correct |
16 ms |
21172 KB |
Output is correct |
5 |
Correct |
27 ms |
21168 KB |
Output is correct |
6 |
Correct |
25 ms |
21196 KB |
Output is correct |
7 |
Correct |
28 ms |
21068 KB |
Output is correct |
8 |
Correct |
27 ms |
21152 KB |
Output is correct |
9 |
Correct |
43 ms |
21076 KB |
Output is correct |
10 |
Correct |
28 ms |
21068 KB |
Output is correct |
11 |
Correct |
26 ms |
21196 KB |
Output is correct |
12 |
Correct |
29 ms |
21132 KB |
Output is correct |
13 |
Correct |
33 ms |
21132 KB |
Output is correct |
14 |
Correct |
34 ms |
21164 KB |
Output is correct |
15 |
Correct |
29 ms |
21196 KB |
Output is correct |
16 |
Correct |
36 ms |
21084 KB |
Output is correct |
17 |
Correct |
31 ms |
21060 KB |
Output is correct |
18 |
Correct |
1159 ms |
167916 KB |
Output is correct |
19 |
Correct |
1201 ms |
170748 KB |
Output is correct |
20 |
Correct |
1178 ms |
170564 KB |
Output is correct |
21 |
Correct |
1198 ms |
170700 KB |
Output is correct |
22 |
Correct |
1155 ms |
170752 KB |
Output is correct |
23 |
Correct |
1614 ms |
169580 KB |
Output is correct |
24 |
Correct |
1476 ms |
169712 KB |
Output is correct |
25 |
Correct |
1451 ms |
169704 KB |
Output is correct |
26 |
Correct |
131 ms |
166212 KB |
Output is correct |
27 |
Correct |
1256 ms |
169316 KB |
Output is correct |
28 |
Correct |
1141 ms |
169568 KB |
Output is correct |
29 |
Correct |
974 ms |
169556 KB |
Output is correct |
30 |
Correct |
1000 ms |
169840 KB |
Output is correct |
31 |
Correct |
914 ms |
166852 KB |
Output is correct |
32 |
Correct |
701 ms |
166956 KB |
Output is correct |
33 |
Correct |
1056 ms |
169096 KB |
Output is correct |
34 |
Correct |
881 ms |
169256 KB |
Output is correct |
35 |
Correct |
133 ms |
166212 KB |
Output is correct |
36 |
Correct |
973 ms |
169128 KB |
Output is correct |
37 |
Correct |
819 ms |
169180 KB |
Output is correct |
38 |
Correct |
724 ms |
169124 KB |
Output is correct |
39 |
Correct |
648 ms |
168840 KB |
Output is correct |
40 |
Correct |
606 ms |
168712 KB |
Output is correct |
41 |
Correct |
667 ms |
169324 KB |
Output is correct |
42 |
Correct |
597 ms |
169216 KB |
Output is correct |
43 |
Correct |
1329 ms |
167688 KB |
Output is correct |
44 |
Correct |
129 ms |
164804 KB |
Output is correct |
45 |
Correct |
130 ms |
22968 KB |
Output is correct |
46 |
Correct |
101 ms |
22980 KB |
Output is correct |
47 |
Correct |
1061 ms |
167744 KB |
Output is correct |
48 |
Correct |
1272 ms |
167636 KB |
Output is correct |
49 |
Correct |
1111 ms |
167752 KB |
Output is correct |
50 |
Correct |
775 ms |
166576 KB |
Output is correct |
51 |
Correct |
759 ms |
166500 KB |
Output is correct |
52 |
Correct |
788 ms |
166728 KB |
Output is correct |
53 |
Correct |
1310 ms |
167112 KB |
Output is correct |
54 |
Correct |
1212 ms |
167012 KB |
Output is correct |
55 |
Correct |
1240 ms |
167312 KB |
Output is correct |
56 |
Correct |
983 ms |
167784 KB |
Output is correct |
57 |
Correct |
1014 ms |
167828 KB |
Output is correct |
58 |
Correct |
1475 ms |
167812 KB |
Output is correct |
59 |
Correct |
1470 ms |
167736 KB |
Output is correct |
60 |
Correct |
1447 ms |
167852 KB |
Output is correct |
61 |
Correct |
1471 ms |
167744 KB |
Output is correct |
62 |
Correct |
1388 ms |
167408 KB |
Output is correct |
63 |
Correct |
1396 ms |
167616 KB |
Output is correct |
64 |
Correct |
1407 ms |
167804 KB |
Output is correct |
65 |
Correct |
1195 ms |
167552 KB |
Output is correct |
66 |
Correct |
1118 ms |
170544 KB |
Output is correct |
67 |
Correct |
1413 ms |
170544 KB |
Output is correct |
68 |
Correct |
1261 ms |
170728 KB |
Output is correct |
69 |
Correct |
963 ms |
170548 KB |
Output is correct |
70 |
Correct |
1388 ms |
170400 KB |
Output is correct |
71 |
Correct |
1367 ms |
170560 KB |
Output is correct |
72 |
Correct |
1391 ms |
170660 KB |
Output is correct |
73 |
Correct |
1198 ms |
170712 KB |
Output is correct |
74 |
Correct |
1206 ms |
170688 KB |
Output is correct |
75 |
Correct |
1250 ms |
170580 KB |
Output is correct |
76 |
Correct |
997 ms |
170488 KB |
Output is correct |
77 |
Correct |
973 ms |
170440 KB |
Output is correct |
78 |
Correct |
980 ms |
170476 KB |
Output is correct |
79 |
Correct |
889 ms |
169988 KB |
Output is correct |
80 |
Correct |
840 ms |
169852 KB |
Output is correct |
81 |
Correct |
853 ms |
169928 KB |
Output is correct |
82 |
Correct |
788 ms |
170576 KB |
Output is correct |
83 |
Correct |
813 ms |
170600 KB |
Output is correct |
84 |
Correct |
801 ms |
170764 KB |
Output is correct |
85 |
Correct |
1599 ms |
172724 KB |
Output is correct |
86 |
Correct |
142 ms |
25152 KB |
Output is correct |
87 |
Correct |
112 ms |
25452 KB |
Output is correct |
88 |
Correct |
1375 ms |
170968 KB |
Output is correct |
89 |
Correct |
1598 ms |
172888 KB |
Output is correct |
90 |
Correct |
1345 ms |
170808 KB |
Output is correct |
91 |
Correct |
1224 ms |
170568 KB |
Output is correct |
92 |
Correct |
1200 ms |
170728 KB |
Output is correct |
93 |
Correct |
1444 ms |
169736 KB |
Output is correct |
94 |
Correct |
1529 ms |
171592 KB |
Output is correct |
95 |
Correct |
1520 ms |
171736 KB |
Output is correct |
96 |
Correct |
1485 ms |
170472 KB |
Output is correct |
97 |
Correct |
1195 ms |
170560 KB |
Output is correct |
98 |
Correct |
1245 ms |
170504 KB |
Output is correct |
99 |
Correct |
1733 ms |
172752 KB |
Output is correct |
100 |
Correct |
1712 ms |
172604 KB |
Output is correct |
101 |
Correct |
1709 ms |
172820 KB |
Output is correct |
102 |
Correct |
1748 ms |
172740 KB |
Output is correct |
103 |
Correct |
1607 ms |
170676 KB |
Output is correct |
104 |
Correct |
1649 ms |
170948 KB |
Output is correct |
105 |
Correct |
1478 ms |
170496 KB |
Output is correct |
106 |
Correct |
1285 ms |
170212 KB |
Output is correct |
107 |
Correct |
1526 ms |
170920 KB |
Output is correct |
108 |
Correct |
1671 ms |
171624 KB |
Output is correct |
109 |
Correct |
1419 ms |
169496 KB |
Output is correct |