Cod sursa(job #2377961)

Utilizator DimaTCDima Trubca DimaTC Data 11 martie 2019 15:11:41
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.57 kb
#include<bits/stdc++.h>
using namespace std;
int P[100010];
int n,m,c;

int find(int i) {
	if (P[i]==i) return i;
	else return P[i]=find(P[i]);
}

void unit(int x, int y) {
	int a=find(x);
	int b=find(y);
	P[b]=a;
}

int main() {
	ifstream cin("disjoint.in");
	ofstream cout("disjoint.out");
	cin>>n>>m;
	for (int i=1; i<=n; i++) P[i]=i;

	for (int i=1; i<=m; i++) {
		int x,y;
		cin>>c>>x>>y;
		if (c==1) {
			unit(x,y);
		} else {
			int a,b;
			a=find(x);
			b=find(y);
			if (b==a) cout<<"DA\n";
			else cout<<"NU\n";
		}
	}


	return 0;
}