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;
}