P1948 dijkstra求调

P1948 [USACO08JAN] Telephone Lines S

```cpp while (l < r) { int mid = l + r >> 1; if (dijkstra(mid) == true) l = mid; else l = mid + 1; } ``` 改成 `r=mid` 还是不对
by PassName @ 2022-08-04 08:34:47


我想因为您没有把 `priority_queue` 重载成小根堆
by lzyqwq @ 2022-08-04 08:36:30


@[蒟蒻·廖子阳](/user/539211) 好像并不需要啊。。。。 这个不影响吧
by PassName @ 2022-08-04 08:38:24


@[单南松](/user/524911) 呃呃呃呃原来您取负权了
by lzyqwq @ 2022-08-04 08:40:38


@[蒟蒻·廖子阳](/user/539211) 破案了 `bool dijkstra(int x)` 这个东西和函数里面的 `int x = q.top().second;` 重定义了,已过,谢谢
by PassName @ 2022-08-04 08:42:05


@[单南松](/user/524911) 您把二分换成这个试试 ```cpp int l = 1, r = 1e6, ans = 1e6 + 1; while (l <= r) { int mid = l + r >> 1; if (dijkstra(mid)) { r = mid - 1; ans = mid; } else { l = mid + 1; } } if (ans <= 1e6) { cout << ans; } else { cout << -1; } ```
by lzyqwq @ 2022-08-04 08:47:19


@[单南松](/user/524911) az
by lzyqwq @ 2022-08-04 08:47:35


|