Cod sursa(job #1887079)

Utilizator lauratalaatlaura talaat lauratalaat Data 21 februarie 2017 12:38:11
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<stdio.h>
int t[100001];
int dad ( int nod ){
    if(t[nod]==nod)
        return nod;
    return t[nod]=dad(t[nod]);
}
void joint ( int a , int b ){
    int ta,tb;
    ta=dad(a);
    tb=dad(b);
    t[ta]=tb;
}
int main(){
    int n,m,c,x,y,i;
    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(i=1;i<=m;i++){
        scanf("%d%d%d",&c,&x,&y);
        if(c==1)
            joint(x,y);
        else{
            if(dad(x)==dad(y))
                printf("DA\n");
            else
                printf("NU\n");
        }
    }
    return 0;
}