GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 12 / 0 / 12
Functions: 100.0% 1 / 0 / 1
Branches: 100.0% 14 / 0 / 14

src/edh/prufer/seq.hpp
Line Branch Exec Source
1 #pragma once
2
3 #include "../../util/alias/others/lib.hpp"
4
5 namespace tifa_libs {
6
7 //! vertex ID starts at 1
8 //! tree root = n
9 // father ID of i is fa[i], fa[0] = 0
10 12 CEXP vecu prufer(spnu fa) NE {
11 12 cu32 n = (u32)fa.size();
12 12 vecu deg(n + 1);
13
2/2
✓ Branch 2 taken 9511098 times.
✓ Branch 3 taken 12 times.
9511110 flt_ (u32, i, 1, n) ++deg[fa[i]];
14 12 vecu code(n);
15
2/2
✓ Branch 0 taken 4756535 times.
✓ Branch 1 taken 12 times.
4756547 for (u32 i = 1, j = 1; i <= n - 2; ++i, ++j) {
16
2/2
✓ Branch 1 taken 4754562 times.
✓ Branch 2 taken 4756535 times.
9511097 while (deg[j]) ++j;
17 4756535 code[i] = fa[j];
18
8/8
✓ Branch 3 taken 9511086 times.
✓ Branch 4 taken 11 times.
✓ Branch 7 taken 6011331 times.
✓ Branch 8 taken 3499755 times.
✓ Branch 10 taken 4754562 times.
✓ Branch 11 taken 1256769 times.
✓ Branch 12 taken 4754562 times.
✓ Branch 13 taken 4756535 times.
9511097 while (i <= n - 2 && !--deg[code[i]] && code[i] < j) code[i + 1] = fa[code[i]], ++i;
19 }
20 12 code.pop_back();
21 12 return code;
22 12 }
23
24 } // namespace tifa_libs
25