#include<bits/stdc++.h>
using namespace std;
class solve{
public:
int n;
int k;
int fa[50001*3];
int find(int x){
return fa[x]==x?x:fa[x]=find(fa[x]);
}
void add(int x,int y)
{
x=find(x),y=find(y);
fa[x]=y;
}
void work(){
scanf("%d%d",&n,&k);
for(int i=1; i<=n*3; i++)fa[i]=i;
int ans=0;
for(int i=1; i<=k; i++)
{
int op,x,y;
scanf("%d%d%d",&op,&x,&y);
if(x>n||y>n)ans++;
else
{
if(op==1)
{
if(find(x+n)==find(y)||find(x+2*n)==find(y))
{
ans++;
}
else
{
add(x,y);
add(x+n,y+n);
add(x+2*n,y+2*n);
}
}
else
{
if(find(x)==find(y)||find(x+2*n)==find(y)||find(y+n)==find(x)){
ans++;
}
else{
add(x,y+2*n);
add(x+n,y);
add(x+2*n,y+n);
}
}
}
}
cout<<ans<<endl;
}
}x;
int main()
{
x.work();
}
标签:食物链,int,else,fa,add,ans,find
From: https://www.cnblogs.com/dadidididi/p/16745612.html