GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 36 / 0 / 36
Functions: 100.0% 1 / 0 / 1
Branches: 83.3% 55 / 0 / 66

test/cpv/yukicoder/1775.cpp
Line Branch Exec Source
1 // competitive-verifier: PROBLEM https://yukicoder.me/problems/no/1775
2 #include "../../../src/math/ds/nimber/lib.hpp"
3 #include "../../../src/util/rand/lib.hpp"
4
5 using namespace tifa_libs;
6 nimber64 dp[2][2][128][128], nx[2][2][128][128], w[128][128];
7
8 90 int main() {
9
1/2
✓ Branch 2 taken 90 times.
✗ Branch 3 not taken.
90 std::cin.tie(nullptr)->std::ios::sync_with_stdio(false);
10 90 rand_gen<u64> g(1, std::numeric_limits<u64>::max());
11 u64 n, m, x, y, z;
12
5/10
✓ Branch 1 taken 90 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 90 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 90 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 90 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 90 times.
✗ Branch 14 not taken.
90 std::cin >> n >> m >> x >> y >> z;
13 90 --x, --y, --z;
14
2/2
✓ Branch 0 taken 8628 times.
✓ Branch 1 taken 90 times.
8718 flt_ (u64, i, 0, n)
15
2/2
✓ Branch 2 taken 425786 times.
✓ Branch 3 taken 8628 times.
434414 flt_ (u64, j, 0, i) w[i][j] = w[j][i] = g();
16
2/2
✓ Branch 0 taken 317743 times.
✓ Branch 1 taken 90 times.
317833 for (u64 i = 0, u, v; i < m; ++i) {
17
2/4
✓ Branch 1 taken 317743 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 317743 times.
✗ Branch 5 not taken.
317743 std::cin >> u >> v;
18 317743 --u, --v;
19 317743 w[u][v] = w[v][u] = 0;
20 }
21 90 dp[0][0][x][x] = 1;
22
2/2
✓ Branch 0 taken 3663 times.
✓ Branch 1 taken 6 times.
3669 flt_ (u64, L, 1, n + 1) {
23 3663 memset(nx, 0, sizeof(nx));
24
2/2
✓ Branch 0 taken 7326 times.
✓ Branch 1 taken 3663 times.
10989 flt_ (u32, ky, 0, 2)
25
2/2
✓ Branch 0 taken 14652 times.
✓ Branch 1 taken 7326 times.
21978 flt_ (u32, kz, 0, 2)
26
2/2
✓ Branch 0 taken 1455168 times.
✓ Branch 1 taken 14652 times.
1469820 flt_ (u64, c, 0, n)
27
2/2
✓ Branch 0 taken 145445568 times.
✓ Branch 1 taken 1455168 times.
146900736 flt_ (u64, d, 0, n) {
28
2/2
✓ Branch 2 taken 113184864 times.
✓ Branch 3 taken 32260704 times.
145445568 if (w[c][d] == 0) continue;
29
4/4
✓ Branch 0 taken 16130352 times.
✓ Branch 1 taken 16130352 times.
✓ Branch 2 taken 43812 times.
✓ Branch 3 taken 16086540 times.
32260704 if (ky == 1 && d == y) continue;
30
4/4
✓ Branch 0 taken 16108446 times.
✓ Branch 1 taken 16108446 times.
✓ Branch 2 taken 43144 times.
✓ Branch 3 taken 16065302 times.
32216892 if (kz == 1 && d == z) continue;
31 32173748 u32 nky = ky | (d == y), nkz = kz | (d == z);
32
2/2
✓ Branch 0 taken 3217168168 times.
✓ Branch 1 taken 32173748 times.
3249341916 flt_ (u64, p, 0, n)
33
2/2
✓ Branch 0 taken 3184994420 times.
✓ Branch 1 taken 32173748 times.
3217168168 if (p != d) nx[nky][nkz][d][c] += dp[ky][kz][c][p];
34 }
35
2/2
✓ Branch 0 taken 7326 times.
✓ Branch 1 taken 3663 times.
10989 flt_ (u32, ky, 0, 2)
36
2/2
✓ Branch 0 taken 14652 times.
✓ Branch 1 taken 7326 times.
21978 flt_ (u32, kz, 0, 2)
37
2/2
✓ Branch 0 taken 1455168 times.
✓ Branch 1 taken 14652 times.
1469820 flt_ (u64, i, 0, n)
38
2/2
✓ Branch 0 taken 145445568 times.
✓ Branch 1 taken 1455168 times.
146900736 flt_ (u64, j, 0, n)
39
2/2
✓ Branch 2 taken 32260704 times.
✓ Branch 3 taken 113184864 times.
145445568 if (w[i][j] != 0) nx[ky][kz][i][j] *= w[i][j];
40 3663 std::swap(dp, nx);
41
2/2
✓ Branch 0 taken 358028 times.
✓ Branch 1 taken 3579 times.
361607 flt_ (u64, i, 0, n)
42
2/2
✓ Branch 2 taken 84 times.
✓ Branch 3 taken 357944 times.
358028 if (dp[1][1][x][i] != 0) {
43
2/4
✓ Branch 1 taken 84 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 84 times.
✗ Branch 5 not taken.
84 std::cout << L << '\n';
44 84 return 0;
45 }
46 }
47
1/2
✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
6 std::cout << "-1\n";
48 6 return 0;
49 }
50