emptysetvvvv
2019-06-01 09:22:17
【方法】染色法:从任意一点开始,与他相邻的点染成异种颜色,若遇到相邻同色点则不为二分图。dfs 复杂度
【代码】
bool dfs(int x, bool color) {
col[x] = color;
for(int i = head[x]; i; i = edge[i].next)
if(col[e[i].to] == col[x]) return false;
else if(!col[e[i].to] and !dfs(edge[i].to, !color)) return false;
return true;
}
【方法】扩展域并查集:显然可行,判断冲突即可,若在同一个集合则矛盾。
【方法】带权并查集:相当于用距离染色,奇黑偶白。
两种并查集算法复杂度均为
O(m).