Cod sursa(job #2424033)

Utilizator AndreiAsAndrei Sugeac AndreiAs Data 22 mai 2019 15:19:55
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include <iostream>
#include <fstream>
#include <cstring>
#define nmax 100000
using namespace std;

int N, M;
int tati[nmax];

void reuniune(int a, int b) {
	if (a != b) {
		tati[b] = a;
	}
}

int find(int nod) {
	if (tati[nod] == 0)
		return nod;
	else
		return find(tati[nod]);
}

int main()
{
	ifstream f("disjoint.in");
	ofstream g("disjoint.out");
	f >> N >> M;
	cout << endl;
	for (int i = 1; i <= M; ++i) {
		int op, a, b;
		f >> op >> a >> b;
		if(op == 1)
			reuniune(a, b);
		else
		{
			if (find(a) == find(b)) g << "DA" << endl;
			else g << "NU" << endl;
		}
	}
	return 0;
}