Cod sursa(job #1011135)

Utilizator IonSebastianIon Sebastian IonSebastian Data 16 octombrie 2013 11:33:20
Problema Paduri de multimi disjuncte Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
const int N = 100000;
int t[N+1], a[3][N+1];
int radacina(int x){
    if(t[x] == 0){
        return x;
    }
    int r = radacina(t[x]);
    t[x] = r;
    return r;
}
int main()
{
    int n, m;
    in >> n >> m;
    for(int i = 1; i <= m; i++){
        in >> a[0][i] >> a[1][i] >> a[2][i];
        if(a[0][i] == 2){
            if(radacina(a[1][i]) == radacina(a[2][i]) && radacina(a[1][i]) != 0)
                out << "DA" << "\n";
            else
                out << "NU" << "\n";
        } else {
            if(t[a[2][i]] == 0){
                t[a[2][i]] = a[1][i];
            } else
                if(t[a[1][i]] == 0){
                   t[a[1][i]] = a[2][i];
                } else
                    t[a[2][i]] = t[a[1][i]];
        }
    }
    return 0;
}