Cod sursa(job #2608558)

Utilizator adiaioanaAdia R. adiaioana Data 1 mai 2020 14:58:44
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>

using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int N,M, T[100100];

inline int root(int x) {
    int tx=x, aux;
    while(T[tx]!=tx)
        tx=T[tx];
    while(T[x]!=x) {
        aux=T[x]; T[x]=tx; x=aux;
    }
    return x;
}

inline void onion(int x,int y) {
    int rx=root(x), ry=root(y);
    if(rx==ry)
        return;
    T[rx]=ry;
}

int main()
{
    int x,y,op;
    cin>>N>>M;
    for(int i=1; i<=N; ++i)
        T[i]=i;

    for(int i=1; i<=M; ++i) {
        cin>>op>>x>>y;
        if(op==1)
            onion(x,y);
        else{
            if(root(x)==root(y))
                cout<<"DA"<<'\n';
            else cout<<"NU"<<'\n';
        }
    }
    return 0;
}