Cod sursa(job #1075193)

Utilizator horatiu11Ilie Ovidiu Horatiu horatiu11 Data 8 ianuarie 2014 18:52:12
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
//horatiu11
# include <cstdio>
# define nmax 100001
using namespace std;
int T[nmax],n,m,op,x,y;
inline int father(int x)
{
    if(T[x]!=x)T[x]=father(T[x]);
    return T[x];
}
inline void unific(int x,int y)
{
    T[y]=x;
}
int main()
{
    int 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",&op,&x,&y);
        switch(op)
        {
            case 1:
                unific(father(x),father(y));
                break;
            case 2:
                if(father(x)==father(y))printf("DA\n");
                else printf("NU\n");
                break;
        }
    }
    return 0;
}