Cod sursa(job #2690782)

Utilizator UnknownPercentageBuca Mihnea-Vicentiu UnknownPercentage Data 25 decembrie 2020 18:27:22
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#include <bits/stdc++.h>

using namespace std;

int dad[100001];
int N, M, x, y, op;

void Files(){ 
    freopen("disjoint.in", "r", stdin);
    freopen("disjoint.out", "w", stdout);
}

int Find(int x){
    if(dad[x] == x) return x;
    return Find(dad[x]);
}

void Merge(int x, int y){

    x = Find(x), y = Find(y);
    if(x != y) dad[y] = x;
}

int main(){

    Files();
    scanf("%d%d", &N, &M);

    for(int i = 1;i <= N;i++)
        dad[i] = i;
    
    while(M--){
        scanf("%d%d%d", &op, &x, &y);

        if(op == 1) Merge(x, y);
        if(op == 2) printf((Find(x) == Find(y))? "DA\n" : "NU\n");
    }
}