Cod sursa(job #1954544)

Utilizator DryCookerDordea Dragos DryCooker Data 5 aprilie 2017 14:53:35
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;

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

int const penis=1e5;
int N, M, root[penis], op, x, y;

int getRoot(int nod){
    if(nod==root[nod])
        return nod;
    root[nod]=getRoot(root[nod]);
    return root[nod];
}

void connectNodes(int x, int y){
    int rootX=getRoot(x);
    int rootY=getRoot(y);
    root[rootY]=rootX;
}

void checkRoot(int x, int y){
    int rootX=getRoot(x);
    int rootY=getRoot(y);
    if(rootX==rootY)
        fout<<"DA"<<endl;
    else
        fout<<"NU"<<endl;
}

int main(){
    fin>>N>>M;
    for(int i=1; i<=N; i++)
        root[i]=i;
    for(;M;M--){
        fin>>op>>x>>y;
        if(op==1)
            connectNodes(x,y);
        else
            checkRoot(x,y);
    }
}