Cod sursa(job #2752957)

Utilizator tryharderulbrebenel mihnea stefan tryharderul Data 20 mai 2021 16:00:03
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>
#define NMAX 100003

using namespace std;

int n,m;
int v[NMAX];

int Find(int nod){
    int aux=nod;
    while(v[aux]!=aux){
        aux=v[aux];
    }
    // aux nodul parinte
    while(nod!=aux){
        v[nod]=v[aux];
        nod=v[nod];
    }
    return aux;
}

void uneste(int x,int y){
    v[Find(x)]=Find(y);
}

int main()
{
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);
    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;i++)
        v[i]=i;
    for(int i=1;i<=m;i++){
        int type,x,y;
        scanf("%d %d %d",&type,&x,&y);
        if(type==1){
            uneste(x,y);
        }else{
            if(Find(x)==Find(y))puts("DA");
            else puts("NU");
        }
    }

    return 0;
}