#define wiwihorz
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC target("sse")
#pragma loop-opt(on)
#define rep(i, a, b) for(int i = a; i <= b; i ++)
#define rrep(i, a, b) for(int i = b; i >= a; i --)
#define all(x) x.begin(), x.end()
#define ceil(a, b) ((a + b - 1) / (b))
#define lld long double
#define pii pair<int, int>
#define random mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count())
#define INF 1000000000000000000
#define MOD 1000000007
#define eps (1e-9)
using namespace std;
#ifdef wiwihorz
#define print(a...)cerr<<"Line "<<__LINE__<<":",kout("["+string(#a)+"] = ", a)
void vprint(auto L,auto R){while(L<R)cerr<<*L<<" \n"[next(L) == R], ++L; }
void kout() { cerr << endl; }
template<class T1,class ... T2>void kout(T1 a,T2 ... e){cerr<<a<<" ",kout(e...);}
#else
#define print(...) 0
#define vprint(...) 0
#endif
#define x first
#define y second
namespace solver {
int n, m, q, sz = 300, bk, cnt;
vector<pair<pii, int>> v;
vector<vector<int>> mp;
vector<int> ans, x, y, cost, tp, s;
vector<int> ord, vis, par, rk, bg, go;
void init_(int _n, int _m) {
n = _n, m = _m;
x.assign(m + 1, 0);
y.assign(m + 1, 0);
cost.assign(m + 1, 0);
ord.assign(m, 0);
iota(all(ord), 1);
mp.assign(n + 1, vector<int>());
go.assign(n + 1, 0);
}
void init2_(int _q) {
q = _q;
bk = ceil(q, sz);
ans.assign(q + 1, 0);
v.assign(q + 1, {{0, 0}, 0});
}
int pos(int x) {
if(par[par[x]] == par[x]) return par[x];
else return par[x] = pos(par[x]);
}
void unite(int a, int b) {
int aa = pos(a);
int bb = pos(b);
if(aa == bb) return;
if(rk[bb] > rk[aa]) swap(aa, bb);
rk[aa] += (rk[aa] == rk[bb]);
par[bb] = aa;
bg[aa] += bg[bb];
}
void build() {
vis.assign(m + 1, 0);
rk.assign(n + 1, 0);
par.assign(n + 1, 0);
bg.assign(n + 1, 1);
iota(all(par), 0);
s.clear();
tp.clear();
}
void dfs(int x) {
cnt += bg[pos(x)], go[pos(x)] = 1;
for(auto i : mp[x]) {
if(go[pos(i)]) continue;
dfs(pos(i));
}
}
void solve() {
sort(all(ord), [&](int a, int b) {
return cost[a] > cost[b];
});
rep(i, 1, bk) {
build();
int l = (i - 1) * sz + 1;
int r = min(q, i * sz);
rep(j, l, r) {
if(v[j].y == 1) {
vis[v[j].x.x] = 1;
tp.push_back(v[j].x.x);
}
else s.push_back(j);
}
sort(all(s), [&](int a, int b) {
return v[a].x.y > v[b].x.y;
});
int ii = 0;
vector<pii> ret;
sort(all(tp));
tp.resize(unique(all(tp)) - tp.begin());
for(auto j : s) {
ret.clear();
int id = v[j].x.x, val = v[j].x.y;
rep(k, l, j - 1) if(v[k].y == 1) {
int a = v[k].x.x, b = v[k].x.y;
ret.push_back({a, cost[a]});
cost[a] = b;
}
while(ii < m && (vis[ord[ii]]
|| cost[ord[ii]] >= val)) {
if(!vis[ord[ii]]) {
int cur = ord[ii];
unite(x[cur], y[cur]);
}
ii++;
}
for(auto k : tp) if(cost[k] >= val) {
int l = pos(x[k]), r = pos(y[k]);
go[l] = go[r] = 0;
mp[l].push_back(r);
mp[r].push_back(l);
}
cnt = 0, dfs(pos(id));
ans[j] = cnt;
for(auto k : tp) if(cost[k] >= val) {
int l = pos(x[k]), r = pos(y[k]);
go[l] = go[r] = 0;
mp[l].clear();
mp[r].clear();
}
reverse(all(ret));
for(auto k : ret) cost[k.x] = k.y;
}
rep(j, l, r) if(v[j].y == 1) {
cost[v[j].x.x] = v[j].x.y;
}
vector<int> L, R(m, 0);
for(auto j : ord) if(!vis[j]) L.push_back(j);
auto cmp = [&](int a, int b) {
return cost[a] > cost[b];
};
sort(all(tp), cmp);
merge(tp.begin(), tp.end(), L.begin(), L.end(), R.begin(), cmp);
ord = R;
}
rep(i, 1, q) if(v[i].y == 2) {
cout << ans[i] << "\n";
}
}
};
using namespace solver;
signed main() {
ios::sync_with_stdio(false), cin.tie(0);
int n, m;
cin >> n >> m;
init_(n, m);
rep(i, 1, m) cin >> x[i] >> y[i] >> cost[i];
int q; cin >> q;
init2_(q);
rep(i, 1, q) cin >> v[i].y >> v[i].x.x >> v[i].x.y;
solve();
return 0;
}
Compilation message
bridges.cpp:5: warning: ignoring '#pragma loop ' [-Wunknown-pragmas]
5 | #pragma loop-opt(on)
|
bridges.cpp:19:13: warning: use of 'auto' in parameter declaration only available with '-fconcepts-ts'
19 | void vprint(auto L,auto R){while(L<R)cerr<<*L<<" \n"[next(L) == R], ++L; }
| ^~~~
bridges.cpp:19:20: warning: use of 'auto' in parameter declaration only available with '-fconcepts-ts'
19 | void vprint(auto L,auto R){while(L<R)cerr<<*L<<" \n"[next(L) == R], ++L; }
| ^~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
28 ms |
500 KB |
Output is correct |
4 |
Correct |
5 ms |
468 KB |
Output is correct |
5 |
Correct |
19 ms |
500 KB |
Output is correct |
6 |
Correct |
19 ms |
504 KB |
Output is correct |
7 |
Correct |
22 ms |
496 KB |
Output is correct |
8 |
Correct |
19 ms |
468 KB |
Output is correct |
9 |
Correct |
28 ms |
488 KB |
Output is correct |
10 |
Correct |
20 ms |
468 KB |
Output is correct |
11 |
Correct |
19 ms |
596 KB |
Output is correct |
12 |
Correct |
21 ms |
492 KB |
Output is correct |
13 |
Correct |
25 ms |
496 KB |
Output is correct |
14 |
Correct |
24 ms |
504 KB |
Output is correct |
15 |
Correct |
25 ms |
492 KB |
Output is correct |
16 |
Correct |
24 ms |
492 KB |
Output is correct |
17 |
Correct |
22 ms |
496 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1422 ms |
6836 KB |
Output is correct |
2 |
Correct |
1359 ms |
6880 KB |
Output is correct |
3 |
Correct |
1330 ms |
6912 KB |
Output is correct |
4 |
Correct |
1329 ms |
6940 KB |
Output is correct |
5 |
Correct |
1344 ms |
6864 KB |
Output is correct |
6 |
Correct |
1632 ms |
5972 KB |
Output is correct |
7 |
Correct |
1583 ms |
5916 KB |
Output is correct |
8 |
Correct |
1556 ms |
5832 KB |
Output is correct |
9 |
Correct |
46 ms |
2012 KB |
Output is correct |
10 |
Correct |
1319 ms |
6656 KB |
Output is correct |
11 |
Correct |
1270 ms |
6784 KB |
Output is correct |
12 |
Correct |
1143 ms |
5840 KB |
Output is correct |
13 |
Correct |
1172 ms |
6184 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1044 ms |
5144 KB |
Output is correct |
2 |
Correct |
608 ms |
2992 KB |
Output is correct |
3 |
Correct |
1100 ms |
5220 KB |
Output is correct |
4 |
Correct |
997 ms |
5108 KB |
Output is correct |
5 |
Correct |
48 ms |
1996 KB |
Output is correct |
6 |
Correct |
1059 ms |
5048 KB |
Output is correct |
7 |
Correct |
946 ms |
5224 KB |
Output is correct |
8 |
Correct |
854 ms |
5140 KB |
Output is correct |
9 |
Correct |
762 ms |
4864 KB |
Output is correct |
10 |
Correct |
724 ms |
4736 KB |
Output is correct |
11 |
Correct |
763 ms |
5396 KB |
Output is correct |
12 |
Correct |
713 ms |
5284 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1701 ms |
7248 KB |
Output is correct |
2 |
Correct |
47 ms |
1996 KB |
Output is correct |
3 |
Correct |
112 ms |
3948 KB |
Output is correct |
4 |
Correct |
75 ms |
3748 KB |
Output is correct |
5 |
Correct |
1291 ms |
7268 KB |
Output is correct |
6 |
Correct |
1619 ms |
7272 KB |
Output is correct |
7 |
Correct |
1345 ms |
7148 KB |
Output is correct |
8 |
Correct |
1102 ms |
5596 KB |
Output is correct |
9 |
Correct |
1097 ms |
5532 KB |
Output is correct |
10 |
Correct |
1056 ms |
5560 KB |
Output is correct |
11 |
Correct |
1598 ms |
6504 KB |
Output is correct |
12 |
Correct |
1561 ms |
6424 KB |
Output is correct |
13 |
Correct |
1611 ms |
6488 KB |
Output is correct |
14 |
Correct |
1265 ms |
7200 KB |
Output is correct |
15 |
Correct |
1308 ms |
7196 KB |
Output is correct |
16 |
Correct |
1848 ms |
7060 KB |
Output is correct |
17 |
Correct |
1880 ms |
7284 KB |
Output is correct |
18 |
Correct |
1868 ms |
7220 KB |
Output is correct |
19 |
Correct |
1854 ms |
7200 KB |
Output is correct |
20 |
Correct |
1738 ms |
6788 KB |
Output is correct |
21 |
Correct |
1797 ms |
6756 KB |
Output is correct |
22 |
Correct |
1784 ms |
6908 KB |
Output is correct |
23 |
Correct |
1516 ms |
6532 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1422 ms |
6836 KB |
Output is correct |
2 |
Correct |
1359 ms |
6880 KB |
Output is correct |
3 |
Correct |
1330 ms |
6912 KB |
Output is correct |
4 |
Correct |
1329 ms |
6940 KB |
Output is correct |
5 |
Correct |
1344 ms |
6864 KB |
Output is correct |
6 |
Correct |
1632 ms |
5972 KB |
Output is correct |
7 |
Correct |
1583 ms |
5916 KB |
Output is correct |
8 |
Correct |
1556 ms |
5832 KB |
Output is correct |
9 |
Correct |
46 ms |
2012 KB |
Output is correct |
10 |
Correct |
1319 ms |
6656 KB |
Output is correct |
11 |
Correct |
1270 ms |
6784 KB |
Output is correct |
12 |
Correct |
1143 ms |
5840 KB |
Output is correct |
13 |
Correct |
1172 ms |
6184 KB |
Output is correct |
14 |
Correct |
1044 ms |
5144 KB |
Output is correct |
15 |
Correct |
608 ms |
2992 KB |
Output is correct |
16 |
Correct |
1100 ms |
5220 KB |
Output is correct |
17 |
Correct |
997 ms |
5108 KB |
Output is correct |
18 |
Correct |
48 ms |
1996 KB |
Output is correct |
19 |
Correct |
1059 ms |
5048 KB |
Output is correct |
20 |
Correct |
946 ms |
5224 KB |
Output is correct |
21 |
Correct |
854 ms |
5140 KB |
Output is correct |
22 |
Correct |
762 ms |
4864 KB |
Output is correct |
23 |
Correct |
724 ms |
4736 KB |
Output is correct |
24 |
Correct |
763 ms |
5396 KB |
Output is correct |
25 |
Correct |
713 ms |
5284 KB |
Output is correct |
26 |
Correct |
1445 ms |
6704 KB |
Output is correct |
27 |
Correct |
1682 ms |
6792 KB |
Output is correct |
28 |
Correct |
1550 ms |
6752 KB |
Output is correct |
29 |
Correct |
1352 ms |
6728 KB |
Output is correct |
30 |
Correct |
1700 ms |
6772 KB |
Output is correct |
31 |
Correct |
1706 ms |
6828 KB |
Output is correct |
32 |
Correct |
1673 ms |
6780 KB |
Output is correct |
33 |
Correct |
1560 ms |
6856 KB |
Output is correct |
34 |
Correct |
1524 ms |
6956 KB |
Output is correct |
35 |
Correct |
1593 ms |
6776 KB |
Output is correct |
36 |
Correct |
1372 ms |
6776 KB |
Output is correct |
37 |
Correct |
1348 ms |
6904 KB |
Output is correct |
38 |
Correct |
1354 ms |
6860 KB |
Output is correct |
39 |
Correct |
1192 ms |
6048 KB |
Output is correct |
40 |
Correct |
1214 ms |
6048 KB |
Output is correct |
41 |
Correct |
1197 ms |
6152 KB |
Output is correct |
42 |
Correct |
1137 ms |
6904 KB |
Output is correct |
43 |
Correct |
1139 ms |
6948 KB |
Output is correct |
44 |
Correct |
1133 ms |
6952 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
28 ms |
500 KB |
Output is correct |
4 |
Correct |
5 ms |
468 KB |
Output is correct |
5 |
Correct |
19 ms |
500 KB |
Output is correct |
6 |
Correct |
19 ms |
504 KB |
Output is correct |
7 |
Correct |
22 ms |
496 KB |
Output is correct |
8 |
Correct |
19 ms |
468 KB |
Output is correct |
9 |
Correct |
28 ms |
488 KB |
Output is correct |
10 |
Correct |
20 ms |
468 KB |
Output is correct |
11 |
Correct |
19 ms |
596 KB |
Output is correct |
12 |
Correct |
21 ms |
492 KB |
Output is correct |
13 |
Correct |
25 ms |
496 KB |
Output is correct |
14 |
Correct |
24 ms |
504 KB |
Output is correct |
15 |
Correct |
25 ms |
492 KB |
Output is correct |
16 |
Correct |
24 ms |
492 KB |
Output is correct |
17 |
Correct |
22 ms |
496 KB |
Output is correct |
18 |
Correct |
1422 ms |
6836 KB |
Output is correct |
19 |
Correct |
1359 ms |
6880 KB |
Output is correct |
20 |
Correct |
1330 ms |
6912 KB |
Output is correct |
21 |
Correct |
1329 ms |
6940 KB |
Output is correct |
22 |
Correct |
1344 ms |
6864 KB |
Output is correct |
23 |
Correct |
1632 ms |
5972 KB |
Output is correct |
24 |
Correct |
1583 ms |
5916 KB |
Output is correct |
25 |
Correct |
1556 ms |
5832 KB |
Output is correct |
26 |
Correct |
46 ms |
2012 KB |
Output is correct |
27 |
Correct |
1319 ms |
6656 KB |
Output is correct |
28 |
Correct |
1270 ms |
6784 KB |
Output is correct |
29 |
Correct |
1143 ms |
5840 KB |
Output is correct |
30 |
Correct |
1172 ms |
6184 KB |
Output is correct |
31 |
Correct |
1044 ms |
5144 KB |
Output is correct |
32 |
Correct |
608 ms |
2992 KB |
Output is correct |
33 |
Correct |
1100 ms |
5220 KB |
Output is correct |
34 |
Correct |
997 ms |
5108 KB |
Output is correct |
35 |
Correct |
48 ms |
1996 KB |
Output is correct |
36 |
Correct |
1059 ms |
5048 KB |
Output is correct |
37 |
Correct |
946 ms |
5224 KB |
Output is correct |
38 |
Correct |
854 ms |
5140 KB |
Output is correct |
39 |
Correct |
762 ms |
4864 KB |
Output is correct |
40 |
Correct |
724 ms |
4736 KB |
Output is correct |
41 |
Correct |
763 ms |
5396 KB |
Output is correct |
42 |
Correct |
713 ms |
5284 KB |
Output is correct |
43 |
Correct |
1701 ms |
7248 KB |
Output is correct |
44 |
Correct |
47 ms |
1996 KB |
Output is correct |
45 |
Correct |
112 ms |
3948 KB |
Output is correct |
46 |
Correct |
75 ms |
3748 KB |
Output is correct |
47 |
Correct |
1291 ms |
7268 KB |
Output is correct |
48 |
Correct |
1619 ms |
7272 KB |
Output is correct |
49 |
Correct |
1345 ms |
7148 KB |
Output is correct |
50 |
Correct |
1102 ms |
5596 KB |
Output is correct |
51 |
Correct |
1097 ms |
5532 KB |
Output is correct |
52 |
Correct |
1056 ms |
5560 KB |
Output is correct |
53 |
Correct |
1598 ms |
6504 KB |
Output is correct |
54 |
Correct |
1561 ms |
6424 KB |
Output is correct |
55 |
Correct |
1611 ms |
6488 KB |
Output is correct |
56 |
Correct |
1265 ms |
7200 KB |
Output is correct |
57 |
Correct |
1308 ms |
7196 KB |
Output is correct |
58 |
Correct |
1848 ms |
7060 KB |
Output is correct |
59 |
Correct |
1880 ms |
7284 KB |
Output is correct |
60 |
Correct |
1868 ms |
7220 KB |
Output is correct |
61 |
Correct |
1854 ms |
7200 KB |
Output is correct |
62 |
Correct |
1738 ms |
6788 KB |
Output is correct |
63 |
Correct |
1797 ms |
6756 KB |
Output is correct |
64 |
Correct |
1784 ms |
6908 KB |
Output is correct |
65 |
Correct |
1516 ms |
6532 KB |
Output is correct |
66 |
Correct |
1445 ms |
6704 KB |
Output is correct |
67 |
Correct |
1682 ms |
6792 KB |
Output is correct |
68 |
Correct |
1550 ms |
6752 KB |
Output is correct |
69 |
Correct |
1352 ms |
6728 KB |
Output is correct |
70 |
Correct |
1700 ms |
6772 KB |
Output is correct |
71 |
Correct |
1706 ms |
6828 KB |
Output is correct |
72 |
Correct |
1673 ms |
6780 KB |
Output is correct |
73 |
Correct |
1560 ms |
6856 KB |
Output is correct |
74 |
Correct |
1524 ms |
6956 KB |
Output is correct |
75 |
Correct |
1593 ms |
6776 KB |
Output is correct |
76 |
Correct |
1372 ms |
6776 KB |
Output is correct |
77 |
Correct |
1348 ms |
6904 KB |
Output is correct |
78 |
Correct |
1354 ms |
6860 KB |
Output is correct |
79 |
Correct |
1192 ms |
6048 KB |
Output is correct |
80 |
Correct |
1214 ms |
6048 KB |
Output is correct |
81 |
Correct |
1197 ms |
6152 KB |
Output is correct |
82 |
Correct |
1137 ms |
6904 KB |
Output is correct |
83 |
Correct |
1139 ms |
6948 KB |
Output is correct |
84 |
Correct |
1133 ms |
6952 KB |
Output is correct |
85 |
Correct |
2102 ms |
8240 KB |
Output is correct |
86 |
Correct |
158 ms |
5768 KB |
Output is correct |
87 |
Correct |
123 ms |
5948 KB |
Output is correct |
88 |
Correct |
1880 ms |
10348 KB |
Output is correct |
89 |
Correct |
2115 ms |
11984 KB |
Output is correct |
90 |
Correct |
1807 ms |
10168 KB |
Output is correct |
91 |
Correct |
1556 ms |
9488 KB |
Output is correct |
92 |
Correct |
1575 ms |
9684 KB |
Output is correct |
93 |
Correct |
1748 ms |
8652 KB |
Output is correct |
94 |
Correct |
2072 ms |
10968 KB |
Output is correct |
95 |
Correct |
2069 ms |
11388 KB |
Output is correct |
96 |
Correct |
2145 ms |
9936 KB |
Output is correct |
97 |
Correct |
1486 ms |
9680 KB |
Output is correct |
98 |
Correct |
1595 ms |
10552 KB |
Output is correct |
99 |
Correct |
2211 ms |
12080 KB |
Output is correct |
100 |
Correct |
2186 ms |
12116 KB |
Output is correct |
101 |
Correct |
2175 ms |
12124 KB |
Output is correct |
102 |
Correct |
2234 ms |
12276 KB |
Output is correct |
103 |
Correct |
2190 ms |
10224 KB |
Output is correct |
104 |
Correct |
2190 ms |
10260 KB |
Output is correct |
105 |
Correct |
1896 ms |
10736 KB |
Output is correct |
106 |
Correct |
1707 ms |
10520 KB |
Output is correct |
107 |
Correct |
1815 ms |
10036 KB |
Output is correct |
108 |
Correct |
2205 ms |
11068 KB |
Output is correct |
109 |
Correct |
1957 ms |
8968 KB |
Output is correct |