Cod sursa(job #2289099)

Utilizator HoratioHoratiu Duma Horatio Data 24 noiembrie 2018 11:09:53
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <cstdio>

using namespace std;

int daddy[100005];
int inaltime[100005];

int op,n;

int main()
{

    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);
    scanf("%d %d",&n,&op);

    for(int i=0; i<op; i++)
    {
        int mod;
        int a,b;
        scanf("%d %d %d",&mod,&a,&b);
        if(mod==1)
        {
            daddy[b]=a;
            inaltime[a]++;
        }

        if(mod==2)
        {
            int x=a;
            int y=b;
            while(daddy[x]!=0)
                x=daddy[x];
            while(daddy[y]!=0)
                y=daddy[y];

            if(x==y)
                printf("DA\n");
            else
                printf("NU\n");
            }
    }

    return 0;
}