Cod sursa(job #1193404)

Utilizator ZenusTudor Costin Razvan Zenus Data 31 mai 2014 17:57:20
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <cstdio>

using namespace std;

#define NMAX 100001

int i,N,Q,type,X,Y;
int T[NMAX];

int multime(int nod)
{
    int rang;

    (T[nod]==nod) ? rang=nod : rang=multime(T[nod]);
    T[nod]=rang;

    return T[nod];
}

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

scanf("%d%d",&N,&Q);

for (i=1;i<=N;++i)
T[i]=i;

while (Q--)
{
    scanf("%d%d%d",&type,&X,&Y);

    if (type==1)
    {
        T[multime(Y)]=T[X];
        continue;
    }

    (multime(X)==multime(Y)) ? printf("DA\n") : printf("NU\n");
}

return 0;
}