Cod sursa(job #3347141)

Utilizator stefan_ciureaStefan Ciurea stefan_ciurea Data 15 martie 2026 18:02:08
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <bits/stdc++.h>

using namespace std;

const int Nmax=1e5+5;

struct DSU {
    int dad[Nmax];
    void build(int n) {
        for (int i=1; i<=n; ++i) dad[i]=i;
    }
    int find(int x) {
        if (x==dad[x]) return x;
        return dad[x]=find(dad[x]);
    }
    void merge(int x, int y) {
        dad[find(x)]=find(y);
    }
} dsu;

int main()
{
    ifstream cin("disjoint.in");
    ofstream cout("disjoint.out");
    int n,m;
    cin>>n>>m;
    dsu.build(n);
    while (m--) {
        int type,x,y;
        cin>>type>>x>>y;
        if (type==1) dsu.merge(x,y);
        else cout<<(dsu.find(x)==dsu.find(y) ? "DA":"NU")<<'\n';
    }
    cin.close();
    cout.close();
    return 0;
}