Cod sursa(job #2304299)

Utilizator HedeaMihneAHedea Mihnea HedeaMihneA Data 17 decembrie 2018 21:17:59
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>


using namespace std;

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

int n,m, t[100005],x, y,rx,ry,q,i;

int rad(int nod){
    while(t[x] > 0)
        nod = t[nod];
    return nod;
}

int main(){
    fin>>n>>m;
    for(i=1;i<=n;i++)
        t[i] = -1;
    while(m--){
        fin>>q>>x>>y;
        rx=rad(x);
        ry=rad(y);
        if(q==1 && rx!=ry){
            if(t[rx]<t[ry]){
                t[rx]+=t[ry];
                t[ry]=rx;
            }
            else{
                t[ry]+=t[rx];
                t[rx]=ry;
            }
        }
        if(q==2){
            if(rx==ry)
                fout<<"DA\n";
            else
                fout<<"NU\n";
        }
    }
    return 0;
}