求助
查看原帖
求助
482163
emo_zkt楼主2024/5/12 21:15
#include<bits/stdc++.h>
using namespace std;
const int N=50005;
int fa[N*3],cnt;
int f(int x){
	if(fa[x]==x)return x;
	return fa[x]=f(fa[x]);
}
int main(){
	int n,k;
	cin>>n>>k;
	for(int i=1;i<=3*n;i++)fa[i]=i;
	for(int i=1;i<=k;i++){
		int s,x,y;
		cin>>s>>x>>y;
		if(s==2&&x==y){
			cnt++;
			continue;
		}
		if(x<1||x>n||y<1||y>n){
			cnt++;
			continue;
		}
		if(s==1){
			if(fa[n+x]==fa[y]||fa[2*n+x]==fa[y]){
				cnt++;
				continue;
			}
			int xx,yy;
			xx=f(x),yy=f(y);
			fa[yy]=fa[xx],fa[n+yy]=fa[n+xx],fa[2*n+yy]=fa[2*n+xx];
		}
		if(s==2){
			if(fa[x]==fa[y]||fa[2*n+x]==fa[y]){
				cnt++;
				continue;
			}
			int xx,yy;
			xx=f(x),yy=f(y);
			fa[yy]=fa[xx+n],fa[yy+n]=fa[xx+2*n],fa[yy+2*n]=fa[xx];
		}
	}
	cout<<cnt;
}

谁能看一下,谢谢

2024/5/12 21:15
加载中...