```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