Cod sursa(job #2137108)

Utilizator DimaTCDima Trubca DimaTC Data 20 februarie 2018 16:51:00
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<bits/stdc++.h>
using namespace std;
int P[100100];
int n,m,c;

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

void unit(int x, int y) {
	if (P[y]==y) {
		P[y]=x;
	} else {
		unit(x,P[y]);
		P[y]=x;
	}
}

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;
}