Cod sursa(job #2816257)

Utilizator mihhTURCU MIHNEA ALEXANDRU mihh Data 11 decembrie 2021 11:07:22
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.63 kb
#include <bits/stdc++.h>
using namespace std;

const int N=1e5+5;

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

int p[N];
int n;

int find(int x){
    if(x==p[x]) return x;
    int r=find(p[x]);
    p[x]=r;
    return r;
}

bool same(int x, int y){
    return find(x)==find(y);
}

void join(int x, int y){
    if(same(x,y)) return;
    p[y]=find(x);
}

int main(){
    int m;
    fin>>n>>m;
    for(int i=1;i<=n;++i){
        p[i]=i;
    }
    for(;m--;){
        int op,x,y;
        fin>>op;
        fin>>x>>y;
        if(op==1){
            join(x,y);
        }else{
            fout<<(same(x,y)?"DA":"NU")<<"\n";
        }
    }
}