Cod sursa(job #1801778)

Utilizator Sergiu1256Ionita Sergiu1256 Data 9 noiembrie 2016 16:53:10
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<bits/stdc++.h>
using namespace std;
void unite(int,int);
int find(int);
int Array[100101],number,operation,t,x,y;

int main(){
	ifstream fin("disjoint.in");
	ofstream fout("disjoint.out");
	ios_base::sync_with_stdio(0);
    cin.tie(0);
	fin>>number>>operation;
	for(int count(1);count<=number;count++) Array[count]=count;
	for(int count(1);count<=operation;count++){
	fin >> t >>x >>y;
	if (t==1) unite(x,y);
	else fout<<(find(x)==find(y)?"DA":"NU")<<endl;
}
	return 0;
}
int find(int nod)
{
    if (Array[nod] == nod) return nod;
    int help = find(Array[nod]);
    Array[nod] = help;
    return help;
}
void unite(int a, int b){
	a=find(a);
	b=find(b);
	Array[a]=b;
}