Cod sursa(job #2686410)

Utilizator CyborgSquirrelJardan Andrei CyborgSquirrel Data 19 decembrie 2020 09:41:11
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

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

int n, m;
int dad[100041];

int dadad(int a){
	if(a != dad[a]){
		dad[a] = dadad(dad[a]);
	}
	return dad[a];
}

void uni(int a, int b){
	dad[dadad(a)] = dadad(b);
}

bool inu(int a, int b){
	return dadad(a)==dadad(b);
}

int main(){
	// ios_base::sync_with_stdio(false);
	fin >> n >> m;
	for(int i = 1; i <= n; ++i){
		dad[i] = i;
	}
	
	for(int i = 0; i < m; ++i){
		int op, a, b;
		fin >> op >> a >> b;
		if(op == 1){
			uni(a, b);
		}else{
			if(inu(a, b)){
				fout << "DA\n";
			}else{
				fout << "NU\n";
			}
		}
	}
	return 0;
}