20240926:图论选做

Upgrading Cities

题意:给定一张 DAG,求关键点个数。点 \(u\) 是关键点当且仅当满足 \(u \to v\) 不连通且 \(v \to u\) 不连通的点 \(v\) 数量不大于 \(1\)

考虑拓扑排序的过程。

一个很重要的性质:当前队列里所有点两两不连通,因为只有一个点出队他的后继点才可能入队。

还有 DAG 本身的性质:存在 \(u \to v\) 和存在 \(v \to u\) 至多满足其中一个,否则有环。

设当前队列为 \(Q\),取出队头 \(u\)

  • \(u\) 不能到达在他之前入队的点,只有一个点出队他的后继点才可能入队。

  • \(\vert Q\vert = 0\),剩下点都直接或间接与 \(u\) 相连。

  • \(\vert Q\vert \ge 2\)\(u\) 已经不可能产生条件了。

  • \(\vert Q\vert = 1\),设队列中仅剩元素为 \(v\)。对于剩下的点 \(w\),他至少能被 \(u, v\) 中的一个到达。

    • 所有 \(w\) 能被 \(u\) 到达。
    • 存在 \(w\) 不能被 \(u\) 到达,那么 \(v\) 能到达 \(w\)。条件等价于存在 \(\deg^- (w) = 1\)\((v, w) \in E\)

这个等价条件可以反证法推出。

如果存在 \(\deg^- (w) = 1\land(v, w) \in E\),显然 \(u\) 不能到达 \(w\)\(w\) 也不能到达 \(u\)(如果能到达 \(w\) 会在 \(u\) 之前入队)。

否则把 \(u, v\) 的边删去后所有新图的「源点」\(w\) 都与 \(u\) 有边相连,也就是说 \(u\) 能到达除 \(v\) 外的所有剩余点。

正反做一遍拓扑排序,时间复杂度 \(O(n + m)\)submission

[ABC336G] 16 Integers

posted @ 2024-09-26 21:11  Lu_xZ  阅读(24)  评论(0)    收藏  举报