题目大意
题目描述
给定一个包含 个顶点和 条边的无向图。第 条边连接顶点 和 ,其初始边权(遍历代价)为 。
你可以将所有边的边权同时增加一个非负实数 。
请问:存在多少条从顶点 到顶点 的不同路径,使得至少存在一个 的值,能够让该路径成为从顶点 到顶点 的最短路之一?
两条路径被认为是不同的,当且仅当它们包含的边数不同,或者在某一步经过了不同编号的边(即使连接的顶点相同)。
由于答案可能很大,请输出可能成为最短路的不同路径数量对 取模后的结果。
输入格式
第一行包含一个整数 (),表示测试用例的数量。
每个测试用例的第一行包含两个整数 和 (,),分别表示图的顶点数和边数。
接下来的 行,每行包含三个整数 、 和 (,),描述了一条连接 和 、边权为 的无向边。
保证所有测试用例的 之和不超过 , 之和不超过 。
输出格式
对于每个测试用例,输出一个整数,表示符合条件的路径数量对 取模的值。
样例输入
1 | 3 |
样例输出
1 | 4 |
样例解释
以第一个测试用例为例,图中有 个顶点和 条边。
顶点 和 之间有两条权值为 的平行边。
顶点 和 之间有两条权值为 的平行边。
无论非负实数 取何值,从 到 的最短路径一定由一条连接 的边和一条连接 的边组成(共经过 条边,总权值为 )。包含边的组合情况共有 种不同路径,因此答案为 。
对于第二个测试用例:
有三条从 到 的主要路径方案:
路径一:直接走边 ,包含 条边,初始总权值为 。当所有边权增加 时,该路径的总代价为 。
路径二:依次经过 ,包含 条边,初始总权值为 。当所有边权增加 时,该路径的总代价为 。
路径三:依次经过 ,包含 条边,初始总权值为 。当所有边权增加 时,该路径的总代价为 。
可以发现,当 时,这三条路径的总代价都是 ,均能够成为从 到 的最短路。因此可能的路径总数为 。
对于第三个测试用例,答案经过相同的逻辑推导,共有 条路径有可能在某个 值下成为最短路。
思路讲解

超出可能成为最小值的那些直线,可以使用凸包 的解决,也可以使用 naive 的方法 解决。
AC代码
1 |
心路历程(WA,TLE,MLE……)
感觉最近的 ai 属于是纯纯傻逼啊,这么简单的 bfs 都不会,非要用 dp,真的是纯纯傻逼,问题是 dp 很难解决这个问题!!!
也不能说是他们的问题。
