Cod sursa(job #1392419)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 18 martie 2015 17:28:30
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb
 #include <fstream>
 #include <cstring>
 #define DIM 100010
using namespace std;

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

int n, m, i, j, k, ok, minim;
int T[DIM], Q, cod, N, x, y, nod1, nod2;

void SetUp(){
    fin >> N >> Q;
    memset(T, -1, sizeof(T));
    return;
}

int Rad(int x){
    while(T[x] > 0)
        x = T[x];
    return x;
}

void CodeExpert(){
    for(k = 1; k <= Q; k ++){
        fin >> cod >> x >> y;
        switch(cod){
            case 1 : {
                nod1 = Rad(x);
                nod2 = Rad(y);
                if(nod1 != nod2){
                    if(T[nod1] < T[nod2]){
                        T[nod1] += T[nod2];
                        T[nod2] = nod1;
                    }
                    else{
                        T[nod2] += T[nod1];
                        T[nod1] = nod2;
                    }
                }
                break;
            }
            case 2 : {
                nod1 = Rad(x);
                nod2 = Rad(y);
                if(nod1 == nod2)
                    fout << "DA\n";
                if(nod1 != nod2)
                    fout << "NU\n";
                break;
            }
        }
    }
    return;
}

int main(){
    SetUp();
    CodeExpert();
    return 0;
}