Cod sursa(job #2277780)

Utilizator richard26Francu Richard richard26 Data 6 noiembrie 2018 20:35:39
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include <bits/stdc++.h>

using namespace std;

int arr[100001];

int src(int x)
{
	if(x == arr[x]) return x;
	return src(arr[x]);
}

void unites(int x, int t)
{
	if(x == arr[x]){
		arr[x] = t;
		return;
	}
	int p = arr[x];
	arr[x] = t;
	unites(p, t);
}
int main()
{
	ifstream f("disjoint.in");
	ofstream g("disjoint.out");

	int i, n, m, x, y;
	f>>n>>m;
	for(i = 1; i <= n; i++) arr[i] = i;
	for(i = 1; i <= m; i++){
		int c;
		f>>c;
		if(c == 1){
			f>>x>>y;
			int t = src(x);
			unites(y, t);
		}
		if(c == 2){
			f>>x>>y;
			if(src(x) == src(y)) g<<"DA"<<"\n";
			 else g<<"NU"<<"\n";

		}
	}

	f.close();
	g.close();
	return 0;
}