rt,样例卡在4,不知道怎么改了
#include<bits/stdc++.h>
using namespace std;
int n,k,ans;
const int N=10000+5;
int f[3*N];
int find(int x){
if(f[x]!=x)
f[x]=find(f[x]);
return f[x];
}
void un(int x,int y){
x=find(x);
y=find(y);
if(x!=y)f[y]=x;
}
bool same(int x,int y){
return find(x)==find(y);
}
int main(){
ans=0;
cin>>n>>k;
for(int i=1;i<=3*n;++i)f[i]=i;
for(int i=0,a,x,y;i<k;++i){
cin>>a>>x>>y;
if(x>n||y>n){
ans++;
continue;
}
if(a==1){
if(same(x,y))
ans++;
else{
un(x,y);
un(x+n,y+n);
un(x+2*n,y+2*n);
}
}
else if(a==2){
if(same(x,y)||same(x,y+n))
ans++;
else{
un(x,y+n);
un(x+n,y+2*n);
un(x+2*n,y);
}
}
}
cout<<ans<<endl;
return 0;
}