#include <bits/stdc++.h>
using namespace std;
using ii = pair<int, int>;
#define X first
#define Y second
const int SQRT = 600;
int n, m;
int a[100007], b[100007], c[100007];
int q;
int t[100007], d[100007], e[100007], ans[100007];
bool changed[100007];
int lastw[100007];
int maxv;
vector<int> not_changed[200007];
vector<int> G[50007];
void readint(int &x) {
x = 0;
char c;
do
c = getchar_unlocked();
while(c < '0' || c > '9');
do {
x = x * 10 + c - '0';
c = getchar_unlocked();
} while(c >= '0' && c <= '9');
}
int p[50007], ran[50007];
bool vis[50007];
int cnt;
vector<int> aff;
void init_DSU() {
for(int i = 1 ; i <= n ; i++) {
p[i] = i;
ran[i] = 1;
}
}
int Find(int i) {
if(p[i] == i)
return i;
return p[i] = Find(p[i]);
}
void Union(int a, int b) {
a = Find(a);
b = Find(b);
if(a == b)
return ;
if(ran[a] < ran[b]) {
p[a] = b;
ran[b] += ran[a];
} else {
p[b] = a;
ran[a] += ran[b];
}
}
void dfs(int w) {
if(vis[w])
return ;
vis[w] = 1;
aff.push_back(w);
cnt += ran[w];
for(int u : G[w])
dfs(u);
}
int count(vector<ii> &E, int w) {
for(ii e : E) {
G[e.X].push_back(e.Y);
G[e.Y].push_back(e.X);
}
cnt = 0;
aff.reserve(100);
dfs(Find(w));
for(int x : aff)
vis[x] = 0;
aff.clear();
for(ii e : E) {
G[e.X].clear();
G[e.Y].clear();
}
return cnt;
}
void process_queries(int x, int y) {
vector<ii> Q;
vector<int> chacha;
chacha.reserve(y - x + 1);
Q.reserve(y - x + 1);
for(int i = x ; i <= y ; i++) {
if(t[i] == 1)
changed[d[i]] = 1;
else
Q.emplace_back(e[i], i);
}
for(int j = 0 ; j < maxv ; j++)
not_changed[j].clear();
for(int i = 1 ; i <= m ; i++) {
if(!changed[i])
not_changed[c[i]].push_back(i);
else
chacha.push_back(i);
}
sort(Q.begin(), Q.end(), greater<ii>());
init_DSU();
int v = maxv;
for(int j = 0 ; j < Q.size() ; j++) {
int q = Q[j].Y;
for(int i = e[q] ; i < v ; i++)
for(int e : not_changed[i])
Union(a[e], b[e]);
v = e[q];
for(int e : chacha)
lastw[e] = c[e];
for(int k = x ; k < q ; k++)
if(t[k] == 1)
lastw[d[k]] = e[k];
vector<ii> E;
E.reserve(y - x + 1);
for(int e : chacha)
if(lastw[e] >= ::e[q])
E.push_back({Find(a[e]), Find(b[e])});
ans[q] = count(E, d[q]);
}
for(int k = x ; k <= y ; k++)
if(t[k] == 1)
c[d[k]] = e[k], changed[d[k]] = 0;
}
vector<int> hlp;
int renum(int x) {
auto it = upper_bound(hlp.begin(), hlp.end(), x);
return prev(it) - hlp.begin();
}
int main() {
//~ scanf("%d%d",&n, &m);
readint(n);
readint(m);
for(int i = 1 ; i <= m ; i++) {
//~ scanf("%d%d%d", &a[i], &b[i], &c[i]);
readint(a[i]);
readint(b[i]);
readint(c[i]);
//~ hlp.push_back(c[i]);
}
//~ scanf("%d", &q);
readint(q);
for(int i = 1 ; i <= q ; i++) {
//~ scanf("%d%d%d", &t[i], &d[i], &e[i]);
readint(t[i]);
readint(d[i]);
readint(e[i]);
if(t[i] == 2)
hlp.push_back(e[i]);
}
hlp.push_back(0);
hlp.push_back(int(1e9) + 7);
sort(hlp.begin(), hlp.end());
hlp.resize(distance(hlp.begin(), unique(hlp.begin(), hlp.end())));
maxv = hlp.size();
for(int i = 1 ; i <= m ; i++)
c[i] = renum(c[i]);
//~ cout << endl;
for(int i = 1 ; i <= q ; i++)
e[i] = renum(e[i]);
//~ cout << endl;
for(int i = 1 ; i <= q ; i += SQRT)
process_queries(i, min(i + SQRT - 1, q));
for(int i = 1 ; i <= q ; i++)
if(ans[i])
printf("%d\n", ans[i]);
return 0;
}
Compilation message
bridges.cpp: In function 'void process_queries(int, int)':
bridges.cpp:124:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int j = 0 ; j < Q.size() ; j++) {
~~^~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
9 ms |
6264 KB |
Output is correct |
2 |
Correct |
8 ms |
6264 KB |
Output is correct |
3 |
Correct |
49 ms |
6776 KB |
Output is correct |
4 |
Correct |
16 ms |
6648 KB |
Output is correct |
5 |
Correct |
27 ms |
6648 KB |
Output is correct |
6 |
Correct |
25 ms |
6776 KB |
Output is correct |
7 |
Correct |
26 ms |
6520 KB |
Output is correct |
8 |
Correct |
25 ms |
6648 KB |
Output is correct |
9 |
Correct |
31 ms |
6520 KB |
Output is correct |
10 |
Correct |
25 ms |
6648 KB |
Output is correct |
11 |
Correct |
24 ms |
6648 KB |
Output is correct |
12 |
Correct |
26 ms |
6648 KB |
Output is correct |
13 |
Correct |
32 ms |
6648 KB |
Output is correct |
14 |
Correct |
29 ms |
6648 KB |
Output is correct |
15 |
Correct |
27 ms |
6648 KB |
Output is correct |
16 |
Correct |
27 ms |
6520 KB |
Output is correct |
17 |
Correct |
28 ms |
6520 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1328 ms |
12916 KB |
Output is correct |
2 |
Correct |
1258 ms |
13684 KB |
Output is correct |
3 |
Correct |
1232 ms |
13556 KB |
Output is correct |
4 |
Correct |
1223 ms |
13556 KB |
Output is correct |
5 |
Correct |
1221 ms |
13560 KB |
Output is correct |
6 |
Correct |
1101 ms |
12532 KB |
Output is correct |
7 |
Correct |
1014 ms |
12532 KB |
Output is correct |
8 |
Correct |
983 ms |
12408 KB |
Output is correct |
9 |
Correct |
114 ms |
9836 KB |
Output is correct |
10 |
Correct |
1012 ms |
12404 KB |
Output is correct |
11 |
Correct |
938 ms |
12532 KB |
Output is correct |
12 |
Correct |
571 ms |
12144 KB |
Output is correct |
13 |
Correct |
493 ms |
12500 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
997 ms |
12020 KB |
Output is correct |
2 |
Correct |
746 ms |
10740 KB |
Output is correct |
3 |
Correct |
1080 ms |
12404 KB |
Output is correct |
4 |
Correct |
999 ms |
12592 KB |
Output is correct |
5 |
Correct |
114 ms |
9840 KB |
Output is correct |
6 |
Correct |
992 ms |
12532 KB |
Output is correct |
7 |
Correct |
883 ms |
12532 KB |
Output is correct |
8 |
Correct |
810 ms |
12404 KB |
Output is correct |
9 |
Correct |
703 ms |
12144 KB |
Output is correct |
10 |
Correct |
677 ms |
12144 KB |
Output is correct |
11 |
Correct |
543 ms |
12028 KB |
Output is correct |
12 |
Correct |
501 ms |
11896 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1578 ms |
13016 KB |
Output is correct |
2 |
Correct |
114 ms |
9840 KB |
Output is correct |
3 |
Correct |
104 ms |
10104 KB |
Output is correct |
4 |
Correct |
52 ms |
10012 KB |
Output is correct |
5 |
Correct |
635 ms |
12656 KB |
Output is correct |
6 |
Correct |
1575 ms |
13552 KB |
Output is correct |
7 |
Correct |
645 ms |
12788 KB |
Output is correct |
8 |
Correct |
921 ms |
12276 KB |
Output is correct |
9 |
Correct |
904 ms |
12272 KB |
Output is correct |
10 |
Correct |
482 ms |
11760 KB |
Output is correct |
11 |
Correct |
1371 ms |
12912 KB |
Output is correct |
12 |
Correct |
1356 ms |
13036 KB |
Output is correct |
13 |
Correct |
696 ms |
12524 KB |
Output is correct |
14 |
Correct |
613 ms |
12828 KB |
Output is correct |
15 |
Correct |
621 ms |
12784 KB |
Output is correct |
16 |
Correct |
1709 ms |
13552 KB |
Output is correct |
17 |
Correct |
1710 ms |
13540 KB |
Output is correct |
18 |
Correct |
1686 ms |
13552 KB |
Output is correct |
19 |
Correct |
1661 ms |
13552 KB |
Output is correct |
20 |
Correct |
727 ms |
12372 KB |
Output is correct |
21 |
Correct |
711 ms |
12432 KB |
Output is correct |
22 |
Correct |
1031 ms |
13068 KB |
Output is correct |
23 |
Correct |
593 ms |
12336 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1328 ms |
12916 KB |
Output is correct |
2 |
Correct |
1258 ms |
13684 KB |
Output is correct |
3 |
Correct |
1232 ms |
13556 KB |
Output is correct |
4 |
Correct |
1223 ms |
13556 KB |
Output is correct |
5 |
Correct |
1221 ms |
13560 KB |
Output is correct |
6 |
Correct |
1101 ms |
12532 KB |
Output is correct |
7 |
Correct |
1014 ms |
12532 KB |
Output is correct |
8 |
Correct |
983 ms |
12408 KB |
Output is correct |
9 |
Correct |
114 ms |
9836 KB |
Output is correct |
10 |
Correct |
1012 ms |
12404 KB |
Output is correct |
11 |
Correct |
938 ms |
12532 KB |
Output is correct |
12 |
Correct |
571 ms |
12144 KB |
Output is correct |
13 |
Correct |
493 ms |
12500 KB |
Output is correct |
14 |
Correct |
997 ms |
12020 KB |
Output is correct |
15 |
Correct |
746 ms |
10740 KB |
Output is correct |
16 |
Correct |
1080 ms |
12404 KB |
Output is correct |
17 |
Correct |
999 ms |
12592 KB |
Output is correct |
18 |
Correct |
114 ms |
9840 KB |
Output is correct |
19 |
Correct |
992 ms |
12532 KB |
Output is correct |
20 |
Correct |
883 ms |
12532 KB |
Output is correct |
21 |
Correct |
810 ms |
12404 KB |
Output is correct |
22 |
Correct |
703 ms |
12144 KB |
Output is correct |
23 |
Correct |
677 ms |
12144 KB |
Output is correct |
24 |
Correct |
543 ms |
12028 KB |
Output is correct |
25 |
Correct |
501 ms |
11896 KB |
Output is correct |
26 |
Correct |
1273 ms |
13428 KB |
Output is correct |
27 |
Correct |
1439 ms |
13300 KB |
Output is correct |
28 |
Correct |
1339 ms |
13556 KB |
Output is correct |
29 |
Correct |
953 ms |
13044 KB |
Output is correct |
30 |
Correct |
1559 ms |
13428 KB |
Output is correct |
31 |
Correct |
1523 ms |
13404 KB |
Output is correct |
32 |
Correct |
1509 ms |
13300 KB |
Output is correct |
33 |
Correct |
1389 ms |
13544 KB |
Output is correct |
34 |
Correct |
1389 ms |
13524 KB |
Output is correct |
35 |
Correct |
1375 ms |
13584 KB |
Output is correct |
36 |
Correct |
1069 ms |
13272 KB |
Output is correct |
37 |
Correct |
1060 ms |
13208 KB |
Output is correct |
38 |
Correct |
1016 ms |
13172 KB |
Output is correct |
39 |
Correct |
944 ms |
12784 KB |
Output is correct |
40 |
Correct |
928 ms |
12784 KB |
Output is correct |
41 |
Correct |
949 ms |
12692 KB |
Output is correct |
42 |
Correct |
682 ms |
12792 KB |
Output is correct |
43 |
Correct |
667 ms |
12792 KB |
Output is correct |
44 |
Correct |
668 ms |
12792 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
9 ms |
6264 KB |
Output is correct |
2 |
Correct |
8 ms |
6264 KB |
Output is correct |
3 |
Correct |
49 ms |
6776 KB |
Output is correct |
4 |
Correct |
16 ms |
6648 KB |
Output is correct |
5 |
Correct |
27 ms |
6648 KB |
Output is correct |
6 |
Correct |
25 ms |
6776 KB |
Output is correct |
7 |
Correct |
26 ms |
6520 KB |
Output is correct |
8 |
Correct |
25 ms |
6648 KB |
Output is correct |
9 |
Correct |
31 ms |
6520 KB |
Output is correct |
10 |
Correct |
25 ms |
6648 KB |
Output is correct |
11 |
Correct |
24 ms |
6648 KB |
Output is correct |
12 |
Correct |
26 ms |
6648 KB |
Output is correct |
13 |
Correct |
32 ms |
6648 KB |
Output is correct |
14 |
Correct |
29 ms |
6648 KB |
Output is correct |
15 |
Correct |
27 ms |
6648 KB |
Output is correct |
16 |
Correct |
27 ms |
6520 KB |
Output is correct |
17 |
Correct |
28 ms |
6520 KB |
Output is correct |
18 |
Correct |
1328 ms |
12916 KB |
Output is correct |
19 |
Correct |
1258 ms |
13684 KB |
Output is correct |
20 |
Correct |
1232 ms |
13556 KB |
Output is correct |
21 |
Correct |
1223 ms |
13556 KB |
Output is correct |
22 |
Correct |
1221 ms |
13560 KB |
Output is correct |
23 |
Correct |
1101 ms |
12532 KB |
Output is correct |
24 |
Correct |
1014 ms |
12532 KB |
Output is correct |
25 |
Correct |
983 ms |
12408 KB |
Output is correct |
26 |
Correct |
114 ms |
9836 KB |
Output is correct |
27 |
Correct |
1012 ms |
12404 KB |
Output is correct |
28 |
Correct |
938 ms |
12532 KB |
Output is correct |
29 |
Correct |
571 ms |
12144 KB |
Output is correct |
30 |
Correct |
493 ms |
12500 KB |
Output is correct |
31 |
Correct |
997 ms |
12020 KB |
Output is correct |
32 |
Correct |
746 ms |
10740 KB |
Output is correct |
33 |
Correct |
1080 ms |
12404 KB |
Output is correct |
34 |
Correct |
999 ms |
12592 KB |
Output is correct |
35 |
Correct |
114 ms |
9840 KB |
Output is correct |
36 |
Correct |
992 ms |
12532 KB |
Output is correct |
37 |
Correct |
883 ms |
12532 KB |
Output is correct |
38 |
Correct |
810 ms |
12404 KB |
Output is correct |
39 |
Correct |
703 ms |
12144 KB |
Output is correct |
40 |
Correct |
677 ms |
12144 KB |
Output is correct |
41 |
Correct |
543 ms |
12028 KB |
Output is correct |
42 |
Correct |
501 ms |
11896 KB |
Output is correct |
43 |
Correct |
1578 ms |
13016 KB |
Output is correct |
44 |
Correct |
114 ms |
9840 KB |
Output is correct |
45 |
Correct |
104 ms |
10104 KB |
Output is correct |
46 |
Correct |
52 ms |
10012 KB |
Output is correct |
47 |
Correct |
635 ms |
12656 KB |
Output is correct |
48 |
Correct |
1575 ms |
13552 KB |
Output is correct |
49 |
Correct |
645 ms |
12788 KB |
Output is correct |
50 |
Correct |
921 ms |
12276 KB |
Output is correct |
51 |
Correct |
904 ms |
12272 KB |
Output is correct |
52 |
Correct |
482 ms |
11760 KB |
Output is correct |
53 |
Correct |
1371 ms |
12912 KB |
Output is correct |
54 |
Correct |
1356 ms |
13036 KB |
Output is correct |
55 |
Correct |
696 ms |
12524 KB |
Output is correct |
56 |
Correct |
613 ms |
12828 KB |
Output is correct |
57 |
Correct |
621 ms |
12784 KB |
Output is correct |
58 |
Correct |
1709 ms |
13552 KB |
Output is correct |
59 |
Correct |
1710 ms |
13540 KB |
Output is correct |
60 |
Correct |
1686 ms |
13552 KB |
Output is correct |
61 |
Correct |
1661 ms |
13552 KB |
Output is correct |
62 |
Correct |
727 ms |
12372 KB |
Output is correct |
63 |
Correct |
711 ms |
12432 KB |
Output is correct |
64 |
Correct |
1031 ms |
13068 KB |
Output is correct |
65 |
Correct |
593 ms |
12336 KB |
Output is correct |
66 |
Correct |
1273 ms |
13428 KB |
Output is correct |
67 |
Correct |
1439 ms |
13300 KB |
Output is correct |
68 |
Correct |
1339 ms |
13556 KB |
Output is correct |
69 |
Correct |
953 ms |
13044 KB |
Output is correct |
70 |
Correct |
1559 ms |
13428 KB |
Output is correct |
71 |
Correct |
1523 ms |
13404 KB |
Output is correct |
72 |
Correct |
1509 ms |
13300 KB |
Output is correct |
73 |
Correct |
1389 ms |
13544 KB |
Output is correct |
74 |
Correct |
1389 ms |
13524 KB |
Output is correct |
75 |
Correct |
1375 ms |
13584 KB |
Output is correct |
76 |
Correct |
1069 ms |
13272 KB |
Output is correct |
77 |
Correct |
1060 ms |
13208 KB |
Output is correct |
78 |
Correct |
1016 ms |
13172 KB |
Output is correct |
79 |
Correct |
944 ms |
12784 KB |
Output is correct |
80 |
Correct |
928 ms |
12784 KB |
Output is correct |
81 |
Correct |
949 ms |
12692 KB |
Output is correct |
82 |
Correct |
682 ms |
12792 KB |
Output is correct |
83 |
Correct |
667 ms |
12792 KB |
Output is correct |
84 |
Correct |
668 ms |
12792 KB |
Output is correct |
85 |
Correct |
1866 ms |
14580 KB |
Output is correct |
86 |
Correct |
134 ms |
10744 KB |
Output is correct |
87 |
Correct |
118 ms |
10644 KB |
Output is correct |
88 |
Correct |
1167 ms |
13940 KB |
Output is correct |
89 |
Correct |
1900 ms |
16756 KB |
Output is correct |
90 |
Correct |
1144 ms |
13556 KB |
Output is correct |
91 |
Correct |
1404 ms |
14452 KB |
Output is correct |
92 |
Correct |
1337 ms |
14708 KB |
Output is correct |
93 |
Correct |
1245 ms |
12916 KB |
Output is correct |
94 |
Correct |
1720 ms |
15860 KB |
Output is correct |
95 |
Correct |
1745 ms |
15860 KB |
Output is correct |
96 |
Correct |
1272 ms |
13680 KB |
Output is correct |
97 |
Correct |
825 ms |
13424 KB |
Output is correct |
98 |
Correct |
802 ms |
13516 KB |
Output is correct |
99 |
Correct |
1960 ms |
16720 KB |
Output is correct |
100 |
Correct |
1960 ms |
16756 KB |
Output is correct |
101 |
Correct |
1979 ms |
16756 KB |
Output is correct |
102 |
Correct |
1978 ms |
16644 KB |
Output is correct |
103 |
Correct |
1293 ms |
13808 KB |
Output is correct |
104 |
Correct |
1291 ms |
13808 KB |
Output is correct |
105 |
Correct |
850 ms |
13604 KB |
Output is correct |
106 |
Correct |
681 ms |
13424 KB |
Output is correct |
107 |
Correct |
958 ms |
13988 KB |
Output is correct |
108 |
Correct |
1596 ms |
15092 KB |
Output is correct |
109 |
Correct |
1232 ms |
12528 KB |
Output is correct |