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: 73.7% 28 / 0 / 38

test/cpv_local/graph/bm.bzoj1486.cpp
Line Branch Exec Source
1 // competitive-verifier: LOCALCASE test/cpv_local/_data/bzoj/1486
2
3 #include "../../../src/graph/ds/alist/lib.hpp"
4 #include "../../../src/graph/sp/bm/lib.hpp"
5
6 using namespace tifa_libs;
7 using std::cin, std::cout;
8
9 10 int main() {
10 u32 n, m;
11
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 cin >> n >> m;
12 10 alist<f64> g(n + 1);
13
2/2
✓ Branch 0 taken 67000 times.
✓ Branch 1 taken 10 times.
67010 flt_ (u32, i, 0, m, u, v) {
14 f64 w;
15
3/6
✓ Branch 1 taken 67000 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 67000 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 67000 times.
✗ Branch 8 not taken.
67000 cin >> u >> v >> w;
16 67000 g.add_arc(u, v, w);
17 }
18 10 f64 l = -1e7, r = 1e7, mid;
19 580 auto chk = [&g](f64 x) {
20
1/2
✓ Branch 2 taken 580 times.
✗ Branch 3 not taken.
580 vec<f64> dis(g.vsize());
21
2/2
✓ Branch 1 taken 1055600 times.
✓ Branch 2 taken 580 times.
1056180 flt_ (u32, i, 1, g.vsize())
22
2/2
✓ Branch 6 taken 3886000 times.
✓ Branch 7 taken 1055600 times.
4941600 for (auto& [v, w] : g[i]) w -= x;
23 580 bool flag = false;
24
2/2
✓ Branch 1 taken 581597 times.
✓ Branch 2 taken 258 times.
581855 flt_ (u32, i, 1, g.vsize())
25
2/2
✓ Branch 1 taken 322 times.
✓ Branch 2 taken 581275 times.
581597 if (!bellman_ford(g, i, fn_0, dis)) {
26 322 flag = true;
27 322 break;
28 }
29
2/2
✓ Branch 1 taken 1055600 times.
✓ Branch 2 taken 580 times.
1056180 flt_ (u32, i, 1, g.vsize())
30
2/2
✓ Branch 6 taken 3886000 times.
✓ Branch 7 taken 1055600 times.
4941600 for (auto& [v, w] : g[i]) w += x;
31 580 return flag;
32 580 };
33
2/2
✓ Branch 0 taken 580 times.
✓ Branch 1 taken 10 times.
590 while (r - l > 1e-10) {
34 580 mid = std::midpoint(l, r);
35
3/4
✓ Branch 1 taken 580 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 322 times.
✓ Branch 4 taken 258 times.
580 (chk(mid) ? r : l) = mid;
36 }
37
3/6
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 6 taken 10 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 10 times.
✗ Branch 10 not taken.
10 cout << std::fixed << std::setprecision(8) << l << '\n';
38 10 }
39