P3720 [AHOI2017初中组]guide题解

提供一种不一样的解法(

也就想、调了5h吧,嗯不算长/cy

考虑33SPFA

第一次,我们使用SPFA建立 MxMx数组,MxiMx_i表示导航1认为的11nn的最短路径 。

第二次,我们再一次使用SPFA建立 MyMy数组,MyiMy_i表示导航2认为的11nn的最短路径。

注意区分pip_iqiq_i不要写错了

重点来了!

我们可以再建一个图GG,其中Gi,jG_{i,j}表示从结点ii走到结点jj,抱怨数之和,当然结点ii和结点jj有直接的边相连。

那么咋算有直接边的两点之间的抱怨数和呢?

我们想到,如果从ii结点出发,到jj结点,第一个GPS会抱怨,当前仅当Mxi+uMxjMx_i+u\neq Mx_j注意是\neq)。

其中u为第一个GPS认为的从ii结点出发,到jj结点的时间。

第二个GPS会抱怨的情况也同理。

我们可以把经过每条边的抱怨值都算出来(第一个GPS是否抱怨+第二个GPS是否抱怨),构成一个图,再跑一遍SPFA,就可以算出抱怨值最小是多少了。

赞赏