牛客IOI周赛普及组27 D.旅游(floyd)

旅游

https://ac.nowcoder.com/acm/contest/11234/D

Description

给出一个有向图,提供两种操作:

  1. 将当前点加入到最短路规划中
  2. 计算当前点到 的距离

Solution

数据范围满足 ,操作1最多只会执行 次,考虑每次都使用 进行 的任意两点最短路径计算,总体时间复杂度 ,那么对于操作2,每次只需要 判断并输出答案即可。
注意到 的遍历特点:

for k in [1, n]:
    for i in [1, n]:
        for j in [1, n]:
            Graph[i][j] = min(Graph[i][j], Graph[i][k] + Graph[k][j]

最外层的 作为中转点进行松弛,在这里我们把某个点加入到最短路规划中,实际上就是添加这么一个中转点。

Code

链接

全部评论
为什么不需要对s进行松弛(在建图之前松弛相当于没松弛)
1 回复 分享
发布于 2021-07-04 10:25
大佬 为什么在输入完边之后直接floyd一次,之后的op=2只更改vis通过率为0?求教
1 回复 分享
发布于 2021-07-09 18:35

相关推荐

不愿透露姓名的神秘牛友
02-14 11:10
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务