【JZOJ2758】【SDOI2012】走迷宫(labyrinth)
╰( ̄▽ ̄)╭ Morenan 被困在了一个迷宫里。 迷宫可以视为 N 个点 M 条边的有向图,其中 Morena n处于起点 S , 迷宫的终点设为 T 。 可惜的是 , Morenan 非常的脑小 , 他只会从一个点出发随机沿着一条从该点出发的有向边 , 到达另一个点 。 这样 , Morenan 走的步数可能很长 , 也可能是无限,更可能到不了终点。 若到不了终点,则步数视为无穷大。 但你必须想方设法求出 Morenan 所走步数的期望值。 (⊙ ▽ ⊙) 一开始看着道题,就觉得是tarjan缩点后,转化成DAG上的问题。 当原图是DAG时 设 f i 表示第 i 个点走到终点的距离。 容易有 f i = ∑ j ∈ n e x t ( i ) 1 | n e x t ( i ) | ∗ ( f j + 1 ) , 其中 n e x t ( i ) 是 i 的后继集合。 很容易使用拓扑排序来完成动态规划。 当原图是一般的有向图时 利用 t a r j a n 算法可以把图中的强连通分量找出来。 对于任意一个强连通分量,我们利用高斯消元来求解出强连通分量中的每个点的 f 值。 套上拓扑排序,就能够解决。 时间复杂度为 O ( n ∗ L 3 ) ,其中 L 为最大强连通分量的大小。 实际时间复杂度则远远不到。 ( ̄~ ̄) 高斯(gauss)消元: 1.目标 对 n 条 n