Cod sursa(job #1801828)

Utilizator cyber_ghSoltan Gheorghe cyber_gh Data 9 noiembrie 2016 17:14:38
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");


int p[100100],n,m;

int find(int nod){
	if (p[nod]==nod) return nod;
	else{
		int x=find(p[nod]);
		p[nod]=x;
		return x;
	}
	
}

void unite(int a,int b){
	a=find(a);
	b=find(b);
	p[a]=b;
}

int main(){
	fin >>n>>m;
	for(int i=1;i<=n;i++) p[i]=i;
	for(int i=1;i<=m;i++){
		int u,x,y;
		fin>>u>>x>>y;
		//cout <<u<<x<<y<<endl;
		if (u==1) unite(x,y);
		else{
			if (find(x)==find(y)) fout<<"DA"<<'\n';
			else fout <<"NU"<<'\n';
		}
		
	}
	
	
	return 0;
}