Cod sursa(job #1196129)

Utilizator TibixbAndrei Tiberiu Tibixb Data 8 iunie 2014 12:26:01
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<fstream>
using namespace std;
int n, m, T[100003], x, y, rx, ry, i, op;
int rad(int x){
    while(T[x]>=0)
        x=T[x];
    return x;
}
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int main(){
    in>>n>>m;
    for(i=1; i<=n; i++){
        T[i]=-1;
    }
    for(;m--;){
        in>>op>>x>>y;
        if(op==1){
            rx=rad(x);
            ry=rad(y);
            if(rx!=ry){
                if(T[rx]<T[ry]){
                    T[rx]+=T[ry];
                    T[ry]=rx;
                }
                else{
                    T[ry]+=T[rx];
                    T[rx]=ry;
                }
            }
        }
        else{
            rx=rad(x);
            ry=rad(y);
            if(rx==ry)
                out<<"DA"<<"\n";
            else
                out<<"NU"<<"\n";
        }
    }
return 0;
}