GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 27 / 0 / 27
Functions: 100.0% 1 / 0 / 1
Branches: 66.7% 36 / 0 / 54

test/cpv/library-checker-graph/scc.tarjan.cpp
Line Branch Exec Source
1 // competitive-verifier: PROBLEM https://judge.yosupo.jp/problem/scc
2 #include "../../../src/graph/scc/tarjan/lib.hpp"
3 #include "../../../src/io/container/lib.hpp"
4
5 using namespace tifa_libs;
6 12 int main() {
7
1/2
✓ Branch 2 taken 12 times.
✗ Branch 3 not taken.
12 std::cin.tie(nullptr)->std::ios::sync_with_stdio(false);
8 u32 n, m;
9
2/4
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 12 times.
✗ Branch 5 not taken.
12 std::cin >> n >> m;
10
11
1/2
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
12 vvecu e(n);
12
2/2
✓ Branch 0 taken 4208808 times.
✓ Branch 1 taken 12 times.
4208820 for (u32 i = 0, u, v; i < m; ++i) {
13
2/4
✓ Branch 1 taken 4208808 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4208808 times.
✗ Branch 5 not taken.
4208808 std::cin >> u >> v;
14
1/2
✓ Branch 2 taken 4208808 times.
✗ Branch 3 not taken.
4208808 e[u].push_back(v);
15 }
16 12 tarjan scc;
17 12 scc.build(e);
18
1/2
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
24 vvecu g(scc.id);
19
1/2
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
12 vecu in(scc.id);
20
2/2
✓ Branch 0 taken 4490130 times.
✓ Branch 1 taken 12 times.
4490142 for (u32 i = 0, x, y; i < n; ++i)
21
2/2
✓ Branch 6 taken 4208808 times.
✓ Branch 7 taken 4490130 times.
8698938 for (auto v : e[i])
22
3/4
✓ Branch 2 taken 3444616 times.
✓ Branch 3 taken 764192 times.
✓ Branch 6 taken 3444616 times.
✗ Branch 7 not taken.
4208808 if ((x = scc.scc_id[i]) != (y = scc.scc_id[v])) g[x].push_back(y), ++in[y];
23
1/2
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
12 std::queue<u32> q;
24
2/2
✓ Branch 0 taken 4054667 times.
✓ Branch 1 taken 12 times.
4054679 for (u32 i = 0; i < scc.id; ++i)
25
3/4
✓ Branch 1 taken 1843558 times.
✓ Branch 2 taken 2211109 times.
✓ Branch 4 taken 1843558 times.
✗ Branch 5 not taken.
4054667 if (!in[i]) q.push(i);
26
2/4
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 12 times.
✗ Branch 5 not taken.
12 std::cout << scc.id << '\n';
27
2/2
✓ Branch 1 taken 4054667 times.
✓ Branch 2 taken 12 times.
4054679 while (!q.empty()) {
28 4054667 u32 u = q.front();
29 4054667 q.pop();
30
3/6
✓ Branch 3 taken 4054667 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 4054667 times.
✗ Branch 7 not taken.
✓ Branch 11 taken 4054667 times.
✗ Branch 12 not taken.
4054667 std::cout << scc.belongs[u].size() << ' ' << scc.belongs[u] << '\n';
31
2/2
✓ Branch 6 taken 3444616 times.
✓ Branch 7 taken 4054667 times.
7499283 for (auto v : g[u]) {
32 3444616 --in[v];
33
3/4
✓ Branch 1 taken 2211109 times.
✓ Branch 2 taken 1233507 times.
✓ Branch 4 taken 2211109 times.
✗ Branch 5 not taken.
3444616 if (!in[v]) q.push(v);
34 }
35 }
36 12 return 0;
37 12 }
38