题解:CF567E President and Roads

博客园 link

首先我们注意到题目很类似 P1186,可以想到建正反图两边 dijkstra。对于判断边 \(u \rightarrow v\),设正图 \(s \rightarrow u\) 的最短路方案数为 \(dp1_u\),反图 \(t \rightarrow v\) 的最短路方案数为,显然若 \(u \rightarrow v\) 必须经过的话,应有 \(dp1_u \times dp2_v = dp1_t\)。注意两个 \(dp\) 数组都要取模,类似哈希,可能会被卡。对于判断另外两种,设正图的最短距离是 \(dis1\),反图为 \(dis2\)\(w\) 为边权,首先显然若使 \(u \rightarrow v\) 必过的话应有 \(dis1_t > dis1_u + dis1_v + w - \Delta\),所以有 \(\Delta_{\min} = dis1_u + dis1_v + w - dis1_t + 1\),将其与 \(w\) 比较输出即可。

code

posted @ 2026-05-23 16:29  ACehomoxue  阅读(7)  评论(0)    收藏  举报