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 |