总共60分,有4个WA,求Debug
查看原帖
总共60分,有4个WA,求Debug
444832
歪瑞古德楼主2023/11/2 17:42

RT,求改代码,谢谢!!!(磕一个)

#include<bits/stdc++.h>//今日逝,今日毙 
using namespace std;
#define MAXN 150050
int s[MAXN];
int n,k,ans; 
inline void make_set(int x){
	s[x]=x;
}
int find_set(int x){
	if(x!=s[x])s[x]=find_set(s[x]);
	return s[x];
}
void merge_set(int x,int y){
	x=find_set(x);
	y=find_set(y);
	if(x==y)return ;  
	s[x]=y;
}
int main(){
	ios::sync_with_stdio(0);
	cout.flush();
	cin>>n>>k;
	for(int i=1;i<=n*3;i++)make_set(i);
	for(int i=1;i<=k;i++){
		int s,x,y;
		cin>>s>>x>>y;
		if(s==1){
			if(find_set(x)==find_set(y))continue;
			else if(find_set(x)==find_set(y+n)){
				ans++;
				continue;
			}else if(find_set(x)==find_set(y+2*n)){
				ans++;
				continue;
			}else{
				merge_set(x,y);
				merge_set(x+n,y+n);
				merge_set(x+2*n,y+2*n);
			}
		}else {
			if(find_set(x)==find_set(y+2*n))continue;
			else if(find_set(x)==find_set(y)){
				ans++;
				continue;
			}else if(find_set(x)==find_set(y+n)){
				ans++;
				continue;
			}else{
				merge_set(x,y+2*n);
				merge_set(x+n,y);
				merge_set(x+2*n,y+n);
			}
		}
	}
	cout<<ans<<endl;
	return 0; 
}
2023/11/2 17:42
加载中...