Cod sursa(job #2043099)

Utilizator MirunaMMiruna Mitu MirunaM Data 19 octombrie 2017 17:13:59
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<stdio.h>
int tata[100005];
int dad(int x){
    if(tata[x]==x)
        return x;
    else
        return tata[x]=dad(tata[x]);
}
void minion(int x,int y){
    int tx,ty;
    tx=dad(x);
    ty=dad(y);
    tata[tx]=ty;
}
int main(){
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);
    int n,m,i,tip,x,y;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
        tata[i]=i;
    for(i=1;i<=m;i++){
        scanf("%d%d%d",&tip,&x,&y);
        if(tip==1)
            minion(x,y);
        else
            if(dad(x)==dad(y))
                printf("DA\n");
            else
                printf("NU\n");
    }
    return 0;
}