Cod sursa(job #3145157)

Utilizator daristyleBejan Darius-Ramon daristyle Data 13 august 2023 12:28:30
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>

using namespace std;

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

const int N_MAX = 1e5;
const int UNITE = 1;
int parent[N_MAX];

void init(int n){
	for(int i = 0; i < n; ++i)
		parent[i] = i;
}

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

void unite(int x, int y){
	x = find(x);
	y = find(y);

	parent[y] = x;
}

int main(){
	int n, queries, type, x, y;
	fin >> n >> queries;

	init(n);

	for(int i = 0; i < queries; ++i){
		fin >> type >> x >> y;
		--x;
		--y;

		if(type == UNITE)
			unite(x, y);
		else{
			if(find(x) == find(y))
				fout << "DA\n";
			else
				fout << "NU\n";
		}
	}

	fin.close();
	fout.close();
	return 0;
}