#include<iostream>
using namespace std;
int n,fa[1000001],k,ans;
int find(int x)
{
if(fa[x]==x) return x;
else fa[x]=find(fa[x]);
}
inline void merge(int x,int y)
{
x=find(x),y=find(y);
fa[y]=x;
}
inline bool check(int x,int y)
{
x=find(x),y=find(y);
if(x==y) return true;
else return false;
}
int main()
{
std::cin.tie(0)->sync_with_stdio(false);
cin>>n>>k;
for(int i=1;i<=n*3;i++)
fa[i]=i;
for(int i=1;i<=k;i++)
{
int opt,x,y;
cin>>opt>>x>>y;
if(x>n||y>n)
{ans++;continue;}
if(opt==1)
{
if(check(x+n,y)||check(x,y+n))
ans++;
else
merge(x,y),merge(x+n,y+n),merge(x+2*n,y+2*n);
}
if(opt==2)
{
if(check(x,y)||check(x,y+n)) ans++;
else merge(x+n,y),merge(x+2*n,y+n),merge(x,y+2*n);
}
}
cout<<ans;
}
数组够大,A了点3,第一个点就样例,本地过了交上去没过RE了,下载了数据发现没空格和换行,会有影响吗,给我干懵了