Cod sursa(job #3368198)

Utilizator tudorr1becleanu tudor tudorr1 Data 13 octombrie 2026 15:04:22
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 p[100001];
int daddy(int x){
    if(x != p[x]) return p[x] = daddy(p[x]);
    return x;
}
void unite(int a, int b){
    a = daddy(a);
    b = daddy(b);
    p[a] = b;
}
int main(){
    ifstream cin("disjoint.in");
    ofstream cout("disjoint.out");
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++) p[i] = i;
    while(m--){
        int type, x, y;
        cin>>type>>x>>y;
        if(type == 1){
            unite(x, y);
        }
        else{
            if(daddy(x) == daddy(y)) cout<<"DA\n";
            else cout<<"NU\n";
        }
    }
}