Pagini recente » Cod sursa (job #2146303) | Cod sursa (job #812414) | Monitorul de evaluare | Cod sursa (job #2091079) | Cod sursa (job #1463650)
#include <bits/stdc++.h>
using namespace std;
#define Nmax 100013
int n,m,op,a,b;
class DisjointForest{
private :
int father[Nmax];
int find(int node){
if (node == father[node]) return node;
return father[node] = find(father[node]);
}
public :
DisjointForest(int n) { for (int i=1;i<=n;++i) father[i]=i; };
void merge(int a,int b){
int fa = find(a);
int fb = find(b);
father[fa]=fb;
}
string check (int a,int b){
if (find(a)==find(b)) return "DA\n";
return "NU\n";
}
};
int main(void) {
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
cin>>n>>m;
DisjointForest Forest(n);
while(m--){
cin>>op>>a>>b;
switch (op) {
case 1 : Forest.merge(a,b); break;
case 2 : cout<<Forest.check(a,b); break;
default : break;
}
}
return 0;
}