Cod sursa(job #3128311)

Utilizator stefdascalescuStefan Dascalescu stefdascalescu Data 9 mai 2023 11:21:42
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <bits/stdc++.h>

using namespace std;

int sz[100002];

int Find(int nod)
{
	if(sz[nod] < 0)
		return nod;
	sz[nod] = Find(sz[nod]);
	return sz[nod];
}

void Union(int a, int b)
{
	if(a == b)
		return;
	if(sz[a] > sz[b])
		swap(a, b);
		
	sz[a] += sz[b];
	sz[b] = a;
}

int main()
{
	
	ifstream cin("disjoint.in");
	ofstream cout("disjoint.out");
	
	int n, q;
	cin >> n >> q;
	
	for(int i = 1; i <= n; i++)
		sz[i] = -1;
	
	for(int i = 1; i <= q; i++)
	{
		int tip, a, b;
		cin >> tip >> a >> b;
		
		if(tip == 1)
			Union(Find(a), Find(b));
		else
		{
			if(Find(a) == Find(b))
				cout << "DA\n";
			else
				cout << "NU\n";
		}
	}
	return 0;
}