10.4 NOIP 模拟赛
T1. 冤家路窄
Description
一个 n n n 个顶点 m m m 条边的无向图(顶点编号 1 ∼ n 1 \sim n 1∼n ,无重边和自环),通过其每条边都需要一定时间。
T小 A 和小 B 是一对冤家,开始时小 A 位于 S S S 点,小 B 位于 T T T 点。他们同时出发,分别沿着最短路去往对方所在的点,即小 A 要去往 T T T 点,小 B 要去往 S S S 点。
需要你来设计双方的路线,使得他们不会在途中相遇(即在某个时间点上,双方即不在同一个点上,也不在同一条边上)。求符合条件的方案数对 1 0 9 + 7 10^9 + 7 109+7 取模的结果。
Solution
考试的时候数组开小了,无向图……
用 dijkstra 分别跑出 $S \to $ 每个点和 $T \to $ 每个点的最短路,并在途中计算最短路条数(以下称为 c i c_i ci )。
设 S → T S \to T S→T 的最短路长度为 d d d,考虑容斥原理:用总方案数减不符合要求的。
则总的方案数为 ( c t ) 2 (c_t)^2 (ct)2 。因为走的是最短路,且边权都是正的,所以两人只会相遇一次。如果在点上相遇,则两人到达该点的时刻为 l e n