#include<bits/stdc++.h>
using namespace std;
const int maxn=300010;
int n,k;
int father[maxn];
int size[maxn];
int find(int x){
    if(father[x]==x)return x;
    return father[x]=find(father[x]);
}
void merge(int x,int y){
    int rootx=find(x),rooty=find(y);
    if(rootx!=rooty){
        father[rootx]=rooty;
        size[rooty]+=size[rootx];
    }
}
int main(){
    cin>>n>>k;
    int cnt=0;
    for(int i=1;i<=3*n;i++){
        father[i]=i;
    }
    for(int i=1;i<=k;i++){
        int op,x,y;
        cin>>op>>x>>y;
        if(x>n||y>n){
            cnt++;
            continue;
        }
        int x_self=x,x_enemy=x+n,x_food=x+n+n;
        int y_self=y,y_enemy=y+n,y_food=y+n+n;
        if(op==1){
            if(find(x_self)==find(y_food)||find(x_food)==find(y_self)){
                cnt++;
            }else{
                merge(x_self,y_self);
                merge(x_food,y_food);
                merge(x_enemy,y_enemy);
            }
        }else if(op==2){
            if(find(x_self)==find(y_self)||find(x_self)==find(y_food)){
                cnt++;
            }else{
                merge(x_self,y_enemy);
                merge(x_food,y_self);
                merge(x_enemy,y_food);
            }
        }
    }
    cout<<cnt;
    return 0;
}

1 条评论

  • 1