Cod sursa(job #2690789)

Utilizator UnknownPercentageBuca Mihnea-Vicentiu UnknownPercentage Data 25 decembrie 2020 18:53:50
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.58 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] == 0) return x;
    return Find(dad[x]);
}
 
void Merge(int x, int y){
    if(x != y) dad[y] = x;
}
 
int main(){
 
    Files();
    scanf("%d%d", &N, &M);
    
    while(M--){
        scanf("%d%d%d", &op, &x, &y);
        x = Find(x), y = Find(y);

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