可以先建图(正反都要),跑一遍最短路,在枚举 0−k0-k0−k ,因为 kkk 比较小枚举按道理是不会超时的,除非时你写错了,跑一遍反图,所有的情况求和,就好了 可是怎么求答案呢: 可以 dpdpdp 来做,用 fff [ iii ][ jjj ]表示从 nnn 到 iii 的距离 <<< 最短距离 +k+k+k 的方案数,对于每一条边都尝试走,而这个状态可以表示为 u−>vu->vu−>v : ddd [ uuu ] −d-d−d [ vvv ] +k−len+k-len+k−len [ u−>vu->vu−>v ];