Cod sursa(job #2273831)

Utilizator marian013Giugioiu Marian Constantin marian013 Data 1 noiembrie 2018 00:19:20
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include<stdio.h>
using namespace std;
int t[100002];
int cauta(int x){
    if(t[x]==x) return x;
    return t[x]=cauta(t[x]);
}
void uneste(int x, int y){
    t[x]=y;
}
int main()
{
    freopen("disjoint.in", "r", stdin);
	freopen("disjoint.out", "w", stdout);
	int n,x,m,y,i,p;
	scanf("%d %d ", &n, &m);
	for(i = 1; i <= n; i++) t[i]=i;
    for(i = 1; i <= m; i++)
    {
        scanf("%d %d %d", &p, &x, &y);
        if( p== 2)
        {
            if(cauta(x) == cauta(y))
                printf("DA\n");
            else
                printf("NU\n");
        }
        else
            uneste(cauta(x), cauta(y));
    }
}