Cod sursa(job #1340863)

Utilizator beldeabogdanBogdan Beldea beldeabogdan Data 12 februarie 2015 09:00:52
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdio>
#define nmax 100000
using namespace std;

int n,m;
int t[nmax];

int getA(int x)
{
    while (t[x] != x) x = t[x];
    return x;
}

int main()
{
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);
    scanf("%d %d",&n,&m);
    for (int i=1;i<=n;i++) t[i] = i;
    for (int qi=1;qi<=m;qi++)
    {
        int type,a,b;
        scanf("%d %d %d",&type,&a,&b);

        if (type == 1)
        {
            int t1 = getA(a);
            int t2 = getA(b);
            t[t1] = t2;
        }
        else
        {
            int t1 = getA(a);
            int t2 = getA(b);
            if (t1 == t2)
            {
                printf("DA\n");
            }
            else
            {
                printf("NU\n");
            }
        }
    }
}