#include<iostream>
#include<cstdio>
using namespace std;
int f[1500090];
int findx(int i)
{
if(f[i]!=i)f[i]=findx(f[i]);
return f[i];
}
void unionn(int r1,int r2)
{
int t1=findx(r1);
int t2=findx(r2);
f[t1]=t2;
}
int main()
{
int m,n;
scanf("%d%d",&m,&n);
int d,x,y;
int l=0;
for(int i=1;i<=m*3+9;i++)
f[i]=i;
for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&d,&x,&y);
if(x>m||y>m)
l++;
else if(d==1)
{
if(findx(x)==findx(y+m)||findx(y+2*m)==findx(x))l++;
else
{
unionn(x,y);
unionn(x+m,y+m);
unionn(x+2*m,y+2*m);
}
}
else if(d==2)
{
if(findx(x)==findx(y)||findx(x)==findx(y+2*m))l++;
else
{
unionn(x,y+m);
unionn(x+2*m,y);
unionn(x+m,y+2*m);
}
}
}
printf("%d",l);
return 0;
}
食物链【NOI2001】
最新推荐文章于 2024-03-13 00:07:20 发布