PKUWC D2T2 环图 证明
Lonely_NewYear · · 算法·理论
原题链接
题面
给你一张有向图,无重边无自环,定义一张新图,新图中的一个点对应原图的一个简单环,两个点有连边当且仅当对应的两个简单环有公共边,求新图连通块数量。
解法
首先一个简单环的每一个点必定处于同一个强连通分量,也就是说对于每个强连通分量问题是独立的,可以先对原图缩点,然后每个强连通分量单独求答案,最后加起来。
大胆猜测对于每个强连通分量,新图的所有点连通,然而这是错的。考虑直接构造出两个三元简单环,只交于一个点,即输入:
5 6
1 2
2 3
3 1
1 4
4 5
5 1
显然答案为 2。
发现问题的主要原因是强连通分量内有“割点”。于是大胆猜测对于每个强连通分量,若将其每条有向边视作无向边时没有割点,则新图所有点连通。
如果这个结论正确,则只需要对每个强连通分量,将有向边改为无向边,跑一边点双,显然一个简单环内所有点处于同一个点双,因此每个点双可以独立开,不难说明一个点双在原图上仍然是一个强连通分量,所以答案为点双数量。
证明
下面只考虑一张强连通图,且将有向边视为无向边后不存在割点的情况。
因为简单环的数量很多,所以考虑把简单环转化到边上。
定义原图中的两条边相邻,当且仅当存在某个简单环同时经过这两条边。相邻具有传递关系。显然只要证明出所有边连通即可。
考虑原图中一个点的所有出边,若他们互相连通,则对于这个点的入边,显然存在某个环经过了他以及某条这个点的出边,因此这条入边也与所有出边连通。所以只需证明一个点的所有出边连通即可。
记这个点为