3 solutions

  • 0
    @ 2025-8-12 15:50:25

    #include<bits/stdc++.h> using namespace std; const int maxn=1000005; int fa[maxn]; int n,k,ans;

    int find(int x){ if(x==fa[x]) return x; return fa[x]=find(fa[x]); }

    void merge(int x,int y){ int fx=find(x),fy=find(y); if(fx!=fy) fa[fx]=fy; }

    int main(){ cin>>n>>k; for(int i=1;i<=3n;i++) fa[i]=i; for(int i=1;i<=k;i++){ int op,x,y; cin>>op>>x>>y; if(x>n||y>n){ ans++; continue; } if(op2&&xy){ ans++; continue; } if(op==1){ if(find(x)==find(y+n)||find(x)==find(y+2n)){ ans++; }else{ merge(x,y); merge(x+n,y+n); merge(x+2n,y+2n); } }else{ if(find(x)==find(y)||find(x)==find(y+2n)){ ans++; }else{ merge(x,y+n); merge(x+n,y+2n); merge(x+2*n,y); } } } cout<<ans; return 0; }

    Information

    ID
    5410
    Time
    1000ms
    Memory
    125MiB
    Difficulty
    4
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By