GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 21 / 0 / 21
Functions: 100.0% 1 / 0 / 1
Branches: 57.1% 24 / 0 / 42

test/cpv/library-checker-graph/minimum_spanning_tree.cpp
Line Branch Exec Source
1 // competitive-verifier: PROBLEM https://judge.yosupo.jp/problem/minimum_spanning_tree/
2 #include "../../../src/edh/discretization/lib.hpp"
3 #include "../../../src/graph/mst/kruskal/lib.hpp"
4 #include "../../../src/io/container/lib.hpp"
5
6 using namespace tifa_libs;
7 31 int main() {
8
1/2
✓ Branch 2 taken 31 times.
✗ Branch 3 not taken.
31 std::cin.tie(nullptr)->std::ios::sync_with_stdio(false);
9 u32 n, m;
10
2/4
✓ Branch 1 taken 31 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 31 times.
✗ Branch 5 not taken.
31 std::cin >> n >> m;
11
1/2
✓ Branch 1 taken 31 times.
✗ Branch 2 not taken.
31 vec<edge_tu> e(m);
12
1/2
✓ Branch 1 taken 31 times.
✗ Branch 2 not taken.
31 map<edge_tu, u32> id;
13 31 u32 cnt = 0;
14
2/2
✓ Branch 4 taken 7665321 times.
✓ Branch 5 taken 31 times.
7665352 for (auto& [w, u, v] : e) {
15
3/6
✓ Branch 1 taken 7665321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 7665321 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 7665321 times.
✗ Branch 8 not taken.
7665321 std::cin >> u >> v >> w;
16
2/4
✓ Branch 1 taken 7665321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 7665321 times.
✗ Branch 5 not taken.
7665321 id[{u, v, w}] = id[{v, u, w}] = ++cnt;
17 }
18
1/2
✓ Branch 1 taken 31 times.
✗ Branch 2 not taken.
31 std::ranges::sort(e);
19
1/2
✓ Branch 1 taken 31 times.
✗ Branch 2 not taken.
31 auto tr = kruskal(e, n);
20 31 u64 ret = 0;
21 31 vecu es;
22
2/2
✓ Branch 0 taken 4618661 times.
✓ Branch 1 taken 31 times.
4618692 flt_ (u32, i, 0, n)
23
2/2
✓ Branch 5 taken 9237260 times.
✓ Branch 6 taken 4618661 times.
13855921 for (auto [to, w] : tr[i]) {
24 9237260 ret += w;
25
2/4
✓ Branch 1 taken 9237260 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 9237260 times.
✗ Branch 5 not taken.
9237260 es.push_back(id[{i, to, w}] - 1);
26 }
27
1/2
✓ Branch 1 taken 31 times.
✗ Branch 2 not taken.
31 std::cout << ret / 2 << '\n'
28
3/6
✓ Branch 1 taken 31 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 31 times.
✗ Branch 5 not taken.
✓ Branch 9 taken 31 times.
✗ Branch 10 not taken.
31 << uniq(es) << '\n';
29 31 return 0;
30 31 }
31