30pts求助
Code
#include<bits/stdc++.h>
using namespace std ;
int f[300005] ;
int n,k,ans ;
inline int read() {
int x=0;char ch=getchar() ;
while(ch<'0'||ch>'9') {ch=getchar();} ;
while(ch>='0'&&ch<='9') {x=x*10+ch-'0';ch=getchar();} ;
return x ;
}
inline int find(int x) {
if(f[x]==x) return x ;
else return f[x]=find(f[x]) ;
}
int main() {
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0) ;
n=read();k=read() ;
for(int i=1;i<=n*3;++i) {f[i]=i;}
for(int l=1,o,x,y;l<=k;++l) {
o=read();x=read();y=read() ;
if(x>n||y>n) {ans++;continue;}
if(o==1) {
if(find(x)==find(y+n)||find(x+n)==find(y)) ans++ ;
else {
f[find(x)]=find(y) ;
f[find(x+n)]=find(y+n) ;
f[find(x+n+n)]=find(x+n+n) ;
}
}else {
if(find(x)==find(y)||find(x)==find(y+n)) ans++ ;
else {
f[find(x+n)]=find(y) ;
f[find(x+n+n)]=find(y+n) ;
f[find(x)]=find(y+n+n) ;
}
}
}
cout<<ans ;
return 0 ;
}
啊啊啊啊啊啊啊啊啊