Cod sursa(job #909806)

Utilizator deresurobertoFMI - Deresu Roberto deresuroberto Data 10 martie 2013 17:14:00
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<cstdio> 
long int tata[100005],n,m,x,y,t,i,tip,t1,t2; 
   
void re() 
{ 
    t=x; 
    while(t!=tata[t])t=tata[t]; 
    t1=t; 
    t=y; 
    while(t!=tata[t])t=tata[t]; 
    t2=t; 
        t=y; 
        while(t!=tata[t]){ 
            t2=t; 
            t=tata[t]; 
            tata[t2]=t1; 
        } 
        tata[t]=t1; 
} 
   
void ver()
{
    t=x; 
    while(t!=tata[t])t=tata[t];
    t1=t;
    t=y;
    while(t!=tata[t])t=tata[t];
    t2=t;
    if(t1==t2)printf("DA\n");
         else printf("NU\n");
}
   
int main() 
{ 
    freopen("disjoint.in","r",stdin); 
    freopen("disjoint.out","w",stdout); 
    scanf("%ld %ld",&n,&m); 
    for(i=1;i<=n;i++)tata[i]=i; 
       
    for(i=1;i<=m;i++){ 
        scanf("%ld %ld %ld",&tip,&x,&y); 
        if(tip==1)re();
        else ver();
    }
    return 0;
}