题意:求桥
思路:求桥的条件是:(u,v)是父子边时 low[v]>dfn[u]
所以我们要解决的问题是怎么判断u,v是父子边(也叫树枝边)。我们在进行dfs的时候,要加入一个fa表示当前进行搜索的点的父节点。v=edge[v].v,如果dfn[v]==0即没访问过,那么肯定是父子边;如果v已经被访问过,我们就要做出筛选,只有v!=fa才进行low[u]=min(low[u],dfn[v]),因为v==fa时,(u,v)变成了返祖边,这时候low[u]被刷新成为fa的dfn,但是low是通过父子边所能找到的最早节点,固要舍去这种情况。
无向连通图的割点、桥
code:
#include
#include
#include
#include
#include
#include
#include
#include
这是在加边的时候判断是否重边
code2:
#include
#include
#include
#include
#include
#include
#include
#include