Cod sursa(job #2932615)

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

using namespace std;

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

int multime[100005];
vector< vector<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_back(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].size()){
				int f = elem[mulY].back();
				multime[f] = mulX;
				elem[mulX].push_back(f);
				elem[mulY].pop_back();
			}	
		}
		else{
			if(multime[x] == multime[y])
				fout << "DA\n";
			else
				fout << "NU\n";
		}
	}

	return 0;
}