Cod sursa(job #1784185)

Utilizator delta_wolfAndrei Stoica delta_wolf Data 19 octombrie 2016 20:43:48
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>

using namespace std;
int n,m,x,y;
int a[100010];
void seek(int tata,int nod)
{
    if(a[nod]==nod)
    {
        if(nod==y)
            a[nod]=tata;
        else return;;
    }
    seek(tata,a[nod]);
    a[nod]=tata;
}
int main()
{
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        a[i]=i;
    for(int t;m;m--)
    {
        scanf("%d%d%d",&t,&x,&y);
        if(t==1)
            seek(x,y);
        else
        {
            while(a[x]!=x)x=a[x];
            while(a[y]!=y)y=a[y];
            if(x==y)
            printf("DA\n");
            else printf("NU\n");
        }

    }
    return 0;
}