Cod sursa(job #3363422)

Utilizator alex.iovita.23@gmail.comIovita Alexandru [email protected] Data 17 august 2026 21:33:26
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include<bits/stdc++.h>

using namespace std;

ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

int n , m , parent[100001] , size[100001];

inline int find(int x){
    if(parent[x] != x) parent[x] = find(parent[x]);
    return parent[x];
}

inline void uniune(int a , int b){
    a = find(a);
    b = find(b);
    if(a != b){
        if(size[a] < size[b]) swap(a , b);
        parent[b] = a;
        size[a] += size[b];
    }
}

int main(){
    fin >> n >> m;
    for(int i = 1 ; i <= n ; i++) parent[i] = i , size[i] = 1;
    for(int i = 1 ; i <= m ; i++){
        int tip , x , y;
        fin >> tip >> x >> y;
        if(tip == 1) uniune(x , y);
        else{
            if(find(x) == find(y)) fout << "DA\n";
            else fout << "NU\n";
        }
    }
}