Cod sursa(job #2224692)

Utilizator StasBrega Stanislav Stas Data 24 iulie 2018 20:29:26
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <bits/stdc++.h>

using namespace std;

const int NMAX=1e5+5;

int N,M,parent[NMAX],next[NMAX];

int find(int p)
{
	if(parent[p]==p)
	    return p;
	return parent[p]=find(parent[p]);
}

int main()
{
	
	freopen("disjoint.in", "r", stdin);
    freopen("disjoint.out", "w", stdout);
	
	scanf("%d %d", &N, &M);
	
	for(int i=1;i<=N;i++)
	{
		parent[i]=i;
		next[i]=i+1;
	}
	
	while(M--)
	{
		int k,x,y;
		scanf("%d %d %d", &k, &x, &y);
		if(k==1)
		    parent[find(y)]=find(x);
		else
		{
			int a=find(x);
			int b=find(y);
			if(a==b)
			    printf("DA\n");
			else
			    printf("NU\n");
		}
	}
	
	return 0;
	
}