Cod sursa(job #1609915)

Utilizator ionutpop118Pop Ioan Cristian ionutpop118 Data 23 februarie 2016 09:59:48
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <cstdio>
using namespace std;
int t[100001];
int findset(int x)
{
    while (t[x] != x)
        x = t[x];
    return x;
}
void unionset(int x, int y)
{
    //x si y sunt radacini
    t[y] = x;
}
int main()
{
    int n, op, x, y, tip;
    freopen("disjoint.in", "r", stdin);
    freopen("disjoint.out", "w", stdout);
    scanf("%d%d", &n, &op);
    for (register int i = 1; i <= n; ++i)
        t[i] = i;
    for (register int i = 1; i <= op; ++i)
    {
        scanf("%d%d%d", &tip, &x, &y);
        if (tip == 1)
            unionset(findset(x), findset(y));
        else
            if (findset(x) == findset(y))
                printf("DA\n");
            else
                printf("NU\n");
    }
    return 0;
}