Cod sursa(job #2424027)

Utilizator AndreiAsAndrei Sugeac AndreiAs Data 22 mai 2019 15:14:09
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 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;
	for (int i = 1; i <= N; ++i)
		cout << tati[i] << " ";
	cout << endl;
	for (int i = 1; i <= M; ++i) {
		int op, a, b;
		f >> op >> a >> b;
		switch (op) {
		case 1: {
			reuniune(a, b);
			break;
		}
		case 2: {
			if (find(a) == find(b)) g << "DA" << endl;
			else g << "NU" << endl;
			break;
		}
		default: break;
		}
	}
	return 0;
}