Cod sursa(job #2932612)

Utilizator AlexePaulAlexe Paul AlexePaul Data 3 noiembrie 2022 12:09:26
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

int multime[100005];
vector< queue<int> > elem;
int n,m;

int main(){

	fin >> n >> m;
	elem.resize(n+1);

	for(int i = 1; i <= n; ++i){
		multime[i] = i;
		elem[i].push(i);
	}

	for(int k = 0; k < m; ++k){
		int op, x, y;
		fin >> op >> x >> y;
		if(op == 1){
			int mulX = multime[x], mulY = multime[y];
			while(!elem[mulY].empty()){
				int f = elem[mulY].front();
				multime[f] = mulX;
				elem[mulX].push(f);
				elem[mulY].pop();
			}	
		}
		else{
			if(multime[x] == multime[y])
				fout << "DA\n";
			else
				fout << "NU\n";
		}
	}

	return 0;
}