Cod sursa(job #1052101)

Utilizator Alexghita96Ghita Alexandru Alexghita96 Data 10 decembrie 2013 21:12:49
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <cstdio>

#define Nmax 100001

using namespace std;

int N, M, T[Nmax];

void Citire()
{
    scanf("%d %d", &N, &M);
    for (int i = 1; i <= N; ++i)
        T[i] = i;
}

int Caut_tata(int nod)
{
    if (T[nod] != nod)
        T[nod] = Caut_tata(T[nod]);
    return T[nod];
}

void Operatii()
{
    int op, x, y;
    for (int i = 1; i <= M; ++i)
    {
        scanf("%d %d %d", &op, &x, &y);
        T[x] = Caut_tata(x);
        T[y] = Caut_tata(y);
        if (op == 1)
            T[T[x]] = T[y];
        else if (T[x] == T[y])
            printf("DA\n");
        else
            printf("NU\n");
    }
}

int main()
{
    freopen("disjoint.in", "r", stdin);
    freopen("disjoint.out", "w", stdout);

    Citire();
    Operatii();

    return 0;
}