cpp
#include<bits/stdc++.h>
using namespace std;
const int N=10010;
int n,m,a,b,c,ans=0,cnt=0;
int fa[N];
map <string,int> mp;
int find(int x)//找x的根节点
{
if(x == fa[x]) return x;
else return fa[x] = find(fa[x]);
}
void merge(int x,int y)
{
fa[find(x)] = find(y);//找到y的根节点和x的根节点,并把它连起来
}
int main()
{
cin>>n>>m;
for(int i=1;i<=3*n;i++)
fa[i]=i;
while(m--)
{
cin>>a>>b>>c;
cout<<1<<" "<<ans<<endl;
if(b>n || c>n)
{
ans++;
continue;
}
if(a==1)
{
if((find(b) == find(c)) || (find(b+n) == find(c+n)) || (find(b+2*n) == find(c+2*n)))
{
merge(b,c);
merge(b+n,c+n);
merge(b+2*n,c+2*n);
}
else ans++;
}
if(a==2)
{
if((find(b) == find(c+n)) || (find(b+n) == find(c+2*n)) || (find(b+2*n) == find(c)))
{
merge(b,c+n);
merge(b+n,c+2*n);
merge(b+2*n,c);
}
else ans++;
}
cout<<cnt<<" "<<"ans="<<ans<<endl;
}
cout<<ans<<endl;
return 0;
}