DAG上必经点和必经边的乱搞做法
出处是 lyd 的蓝书。
有向图上的必经点、必经边问题比较复杂,我们只讨论给定起点和终点 \(s,t\) 的情况。
因为 DAG 的优秀性质,考虑使用乘法原理。
首先我们在原图上做 dp 预处理出 \(s\) 到其他点的走法的数量 \(sn(u)\),再在反图上做 dp 预处理出图上的点到 \(t\) 的走法的数量 \(tn(u)\)。
然后我们有结论:
- \(u\rarr v\) 是割边 \(\iff\) \(sn(u)\cdot tn(v)=sn(t)\)
- \(u\) 是割点 \(\iff\) \(sn(u)\cdot tn(u)=sn(t)\)
但是一般来说走法数量会大的离谱。于是我们可以考虑 hash 的思想,对几个大质数取模验证即可。
(没有代码)