题意:如标题
思路:对于奇环,一个二分图判定就ok了,有奇环<=>非二分图。对于偶环,考虑环必定出现在双联通分量里面,可以先求出图的双联通分量,对于一个双联通分量,对于双联通分量里面的每个环,如果是偶环,则偶环已找到,否则假定存在多个奇环,则可以任选两个奇环,把共享边去掉,一定可以得到一个新偶环,这种情况下偶环也是存在的。所以不存在偶环的情况只可能是双联通分量是一个大奇环,特点是:边数=点数,且为奇。于是先dfs一下标记所有桥,用并查集标记所有双联通分量,对每个双联通分量,计算它的点数,对每条边,如果它的两个端点属于同一个双联通分量,则对应双联通分量边数+1。由于是无向边,每条边会被考虑两次。对每个双联通分量,条件改成!((cnt_v*2=cnt_e)&1),如果上述式子为true,则表示存在偶环。
时间: 2024-10-11 13:13:02