Cod sursa(job #1133051)

Utilizator Sirius2001Happy Birthday Sirius2001 Data 4 martie 2014 12:47:18
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
/*
    Keep It Simple!
*/

#include<stdio.h>

#define MaxN 100005

int Tree[MaxN],n,nrop,type,x,y;

void Add(int x,int y)
{
    Tree[y] = x;
}

int isRelation(int x,int y)
{
    int auxx = x,auxy;
    while(Tree[x] != x)
       x = Tree[x];
    while(Tree[y] != y)
       y= Tree[y];
    if(x == y)
    return 1;
    else
    return 0;
}

int main()
{
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);

    scanf("%d%d",&n,&nrop);

    for(int i=1;i<=n;i++) Tree[i] = i;
    for(int i=1;i<=nrop;i++)
    {
        scanf("%d%d%d",&type,&x,&y);
        if(type == 1)
           Add(x,y);
        else if(type == 2)
           {
               if( isRelation(x,y))
                  printf("DA\n");
               else
                  printf("NU\n");
           }
    }
}