二分图
性质:二分图中不含有长度为奇数的环
判断方法:扩展域并查集&带权并查集
扩展域并查集
将一个点拆分为两个点,
i
′
i'
i′代表不跟
i
i
i在同一边
代码
int fx=get(x[i].a);
int fy=get(x[i].b);
if(fx==fy)
{
printf("%d",x[i].cnt);
return 0;
}
fa[fx]=get(fa[x[i].b+n]);
fa[fy]=get(fa[x[i].a+n]);
带权并查集
利用二分图中不含奇环的性质,我们记录每个点到根节点的路径数,当出现 f x = = f y 时 , 就 可 以 判 断 是 否 为 奇 数 环 fx==fy时,就可以判断是否为奇数环 fx==fy时,就可以判断是否为奇数环