GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 25 / 0 / 25
Functions: 100.0% 2 / 0 / 2
Branches: 62.5% 25 / 0 / 40

test/cpv/library-checker-datastructure/persistent_unionfind.cpp
Line Branch Exec Source
1 // competitive-verifier: PROBLEM https://judge.yosupo.jp/problem/persistent_unionfind
2 #include "../../../src/ds/dsu/pd/lib.hpp"
3
4 using namespace tifa_libs;
5 CEXP usz Q = 200005;
6
7 14 int main() {
8
1/2
✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
14 std::cin.tie(nullptr)->std::ios::sync_with_stdio(false);
9 u32 n, q;
10
2/4
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
14 std::cin >> n >> q;
11
2/4
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
42 vvec<pt3u> tr(Q), qry(Q);
12 14 std::bitset<Q> ans;
13 14 u32 cnt = 0;
14
2/2
✓ Branch 0 taken 1942715 times.
✓ Branch 1 taken 14 times.
1942729 flt_ (u32, i, 1, q + 1) {
15 u32 t, u, v;
16 i32 k;
17
4/8
✓ Branch 1 taken 1942715 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1942715 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1942715 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1942715 times.
✗ Branch 11 not taken.
1942715 std::cin >> t >> k >> u >> v;
18 1942715 ++k;
19
2/2
✓ Branch 0 taken 970993 times.
✓ Branch 1 taken 971722 times.
1942715 if (t == 0)
20
1/2
✓ Branch 2 taken 970993 times.
✗ Branch 3 not taken.
970993 tr[(u32)k].emplace_back(i, u, v);
21 else
22
1/2
✓ Branch 2 taken 971722 times.
✗ Branch 3 not taken.
971722 qry[(u32)k].emplace_back(cnt++, u, v);
23 }
24 14 dsu_pd dsu(n + 1);
25 971007 auto dfs = [&](auto&& dfs, u32 v) -> void {
26
2/2
✓ Branch 10 taken 971722 times.
✓ Branch 11 taken 971007 times.
1942729 for (auto [i, x, y] : qry[v]) ans[i] = dsu.same(x, y);
27
2/2
✓ Branch 6 taken 970993 times.
✓ Branch 7 taken 971007 times.
1942000 for (auto [_, x, y] : tr[v]) {
28 970993 auto t = dsu.time();
29 970993 dsu.merge(x, y);
30
1/2
✓ Branch 1 taken 970993 times.
✗ Branch 2 not taken.
970993 dfs(dfs, _);
31 970993 dsu.rollback(t);
32 }
33 971007 };
34
1/2
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
14 dfs(dfs, 0);
35
4/6
✓ Branch 3 taken 971722 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 971722 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 971722 times.
✓ Branch 10 taken 14 times.
971736 flt_ (u32, i, 0, cnt) std::cout << ans[i] << '\n';
36 14 return 0;
37 14 }
38