2165: 大楼

对于这道题,观察n得范围 <= 100 那么考虑倍增Floyd

d[z][x][y] 表示x ,y 跳了2^z次方次所上升得楼层。

对于不连通得两点令d[0][x][y]  = -inf。然后倍增。

对于当前倍增后如果值大于m就跳出,类似于倍增求lca,所以最后答案应该 + 1

代码基本抄的popoqqq巨佬得...

c++代码如下;

 

7 + 8 =