Cod sursa(job #767354)

Utilizator test_666013Testez test_666013 Data 13 iulie 2012 12:59:28
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <cstdio>
#include <algorithm>
using namespace std;
#define MAX 100001

int n,rad[MAX];

int tata(int x){
    if( x != rad[x] )rad[x] = tata(rad[x]);
    return rad[x];
}

int main(){
    int m,c,x,y;
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);
        scanf("%d %d",&n,&m);

        for(int i=1;i<=n;i++) rad[i] = i;

        while(m--)
        {
            scanf("%d %d %d",&c,&x,&y);
            if( c == 1 ) rad[tata(x)] = tata(y); else
            if( tata(x) == tata(y) )printf("DA\n"); else printf("NU\n");
        }
    return 0;
}