跑路(洛谷)&上班跑路(YBTOJ)
洛谷题面传送门
题目分析:
题面给出每一步可以走2^k步,k为任意正整数。这很明显是倍增。
而简单的最短路无法解决这个问题,因此考虑图上倍增dp。
设f[i][j][q](bool)表示是否存在一条从i到j长度为2^q的路径。
g[i][j]存储从i到j的最小步数和
考虑初始化,
对于每一个输入的有向边(a,b),f[a][b][0]=1,g[a][b]=1
考虑状态转移:
若f[i][k][q-1]==1&&f[k][j][q-1]==1,可以一次走完两条路径,
故f[i][j][q]=1
原创
2021-09-24 11:36:38 ·
100 阅读 ·
0 评论