题目链接:https://ac.nowcoder.com/acm/contest/283/H
有N栋楼和M条道路(单向),每条路都有“不整洁度”W,现在校方想知道从S楼到T楼的所有路径中,“不整洁度”乘积最小是多少。 由于答案可能很大,所以你需要将最后的答案对10E9+7取模。
因为权值会很大,所以直接拿乘积算最短路是不可以的,因为取模后数值大小无法比较。
需要注意的是,题目保证每一个权都是2的幂,虽然我没注意。。
于是我维护了权值的每一位,计算的时候只管它们最终都是2的多少次幂。
于是可以堆优化最短路,在堆里维护2的幂次,这样就能保证一个大小顺序。
1 |
|