Gravatar
梦那边的美好ET
积分:6999
提交:1286 / 2721

Pro3920  编辑题目

Subtask1: n,m≤100

注意到我们可以枚举每一对 (E,S) 并判断 Bob 是否必胜,最后将必胜的方案数除以 nm 就是答案。

判断是否必胜我们直接将边 E 删去并从起点 S 开始搜索即可,时间复杂度 O(n2m)。期望得分 30pts。

Subtask2: w=1

除非 S 是叶子且 E 恰好是 S 的唯一出边,Bob 都是必胜的。统计是简单的,不再赘述。

Subtask3: n,m≤5000

考虑从边双连通分量入手,我们枚举 E。

若 E 不是割边,那么删除 E 不会影响 S 所能到达的点/边集。只要原图中还存在边权与 E 相等的边,那 Bob 就是必胜的,贡献为 n。

若 E 是割边,那么删除 E 会将边双树分为两个连通块,而 S 只能遍历其所处的连通块,所以 Bob 必胜等价于该连通块中有边权与 E 相等的边。直接遍历两个连通块来判断即可。

割边的数量可以达到与 n 同阶,故时间复杂度为 O(nm)。期望得分 60pts。

Subtask3: n,m≤106

考虑优化 E 是割边时的判断过程。注意到一个连通块必定是边双树中的一颗子树或者全树扣掉一颗子树,而后者可以直接用全局减去该子树得到。于是问题等价于求一棵子树中边权与根的父边相等的边的数量。

这个问题的做法非常多,容易 O(n) 实现,期望得分 100pts。


2025-10-24 11:15:02    
我有话要说
Gravatar
梦那边的美好TE
积分:817
提交:86 / 157
其实除了最后一行都是容易得

2025-10-24 12:28:24