Pagini recente » Cod sursa (job #1621739) | Cod sursa (job #2382188) | Cod sursa (job #1247150) | Cod sursa (job #1295142) | Cod sursa (job #2911914)
#include<iostream>
#include<set>
#include<algorithm>
#include <vector>
#include <fstream>
#include <cstring>
#include <map>
#include <math.h>
#include <queue>
#include <stack>
using namespace std;
int n, m;
int tt[110000];
int sz[110000];
int Find (int x){
if (tt[x] == x){
return x;
}
else {
return tt[x] = Find(tt[x]);
}
}
void Union (int a, int b){
if (a!=b){
if (sz[a]>=sz[b]){
tt[b] = a; // radacina lui b este a
sz[a] += sz[b];
}
else {
tt[a] = b;
sz[b] += sz[a];
}
}
}
int main (){
ifstream cin ("disjoint.in");
ofstream cout ("disjoint.out");
cin >> n >> m;
for (int i = 1; i<=n; i++){
tt[i] = i;
sz[i] = 1;
}
for (int i = 1; i<=m; i++){
int cod, x, y;
cin >> cod >> x >> y;
if (cod == 1){
Union (Find(x), Find(y));
}
else {
if (Find (x) == Find (y)){
cout << "DA" << "\n";
}
else {
cout << "NU" << "\n";
}
}
}
}