Cod sursa(job #904315)

Utilizator alecsandrualex cuturela alecsandru Data 4 martie 2013 08:35:04
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<cstdio>
int n,m,rx,ry,x,y,k,op,i,t[100100];
int rad(int a)
{
    if(t[a]==a)
        return a;
    int r=rad(t[a]);
    t[a]=r;
    return r;
}
int main()
{
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
        t[i]=i;
    for(k=1;k<=m;k++)
    {
        scanf("%d%d%d",&op,&x,&y);
        if(op==1)
        {
            rx=rad(x);
            ry=rad(y);
            t[rx]=ry;
        }
        if(op==2)
        {
            rx=rad(x);
            ry=rad(y);
            if(rx!=ry)
                printf("NU\n");
            else
                printf("DA\n");
        }
    }
    return 0;
}