RT,1AC,1WA,8MLE
代码如下
#include<cstdio>
#include<vector>
using namespace std;
vector<int> j;
int find(int x)
{
if(x!=j[x])find(j[x]);
return j[x];
}
void _union(int x,int y)
{
j[find(x)]=find(y);
}
int read()
{
int num=0;
char c=getchar();
while(c<'0'||c>'9')c=getchar();
while('0'<=c&&c<='9')num=num*10+c-'0',c=getchar();
return num;
}
int n,k,z,x,y,ans;
int main(){
n=read(),k=read();
j.push_back(1);
for(int i=1;i<=n*3;i++)
{
j.push_back(i);
}
for(int i=1;i<=k;i++)
{
z=read(),x=read(),y=read();
if(x>n||y>n||x==y){
ans++;
continue;
}
if(z==1){
if(find(x)==find(y+n)||find(y+n+n)==find(x))ans++;
else{
_union(x,y);
_union(x+n,y+n);
_union(x+n+n,y+n+n);
}
}
else{
if(find(x)==find(y)||find(y+n)==find(x)){
ans++;
}else{
_union(x,y+n);
_union(x+n,y+n+n);
_union(x+n+n,y);
}
}
}
printf("%d",ans);
return 0;
}
求大佬指教TAT