CSDN上查了查,敢问用并查集判断二分图是这样判断的吗?
查看原帖
CSDN上查了查,敢问用并查集判断二分图是这样判断的吗?
366481
望眼雨歇楼主2021/11/1 20:56

subtask2全wa了,不知道是不是我的并查集写的有问题,敢请各位dalao看看。

inline void pre(){
	for(int i=1;i<=n*2;i++) root[i]=i;	
}

inline int find(int k){
	if(root[k]==k) return k;
	return root[k]=find(root[k]);
}

inline void merge(int x,int y){
	int fx=find(x),fy=find(y);
	int px=find(x+n),py=find(y+n);
	if(fx==fy){
		ju=0;
	}
	else{
		root[px]=fy,root[py]=fx;
	}
}
                           
//主函数部分                       		for(int i=1;i<=n;i++){
		for(int j=i+1;j<=n;j++){
			if(dist(i,j)>=k){//如果两点间距离>=k则两点间有连边
				merge(i,j),
				merge(j,i);
			}
		}
	}
2021/11/1 20:56
加载中...