Pagini recente » Cod sursa (job #1908829) | Cod sursa (job #2208437) | Cod sursa (job #2479946) | Cod sursa (job #2068668) | Cod sursa (job #2689601)
//ALEXANDRU MICLEA
#include <vector>
#include <algorithm>
#include <string>
#include <string.h>
#include <cstring>
#include <queue>
#include <map>
#include <set>
#include <unordered_map>
#include <time.h>
#include <iomanip>
#include <deque>
#include <math.h>
#include <cmath>
#include <assert.h>
#include <stack>
#include <bitset>
#include <random>
#include <chrono>
#include <assert.h>
using namespace std;
using ll = long long;
#include <fstream>
//ifstream cin("input.in"); ofstream cout("output.out");
ifstream cin("disjoint.in"); ofstream cout("disjoint.out");
//VARIABLES
const int maxn = 1e5 + 5;
int dad[maxn];
//FUNCTIONS
int find(int nod){
if (dad[nod] == nod) return nod;
return find(dad[nod]);
}
void merge(int a, int b){
int A = find(a);
int B = find(b);
if (A != B) dad[B] = A;
}
string query(int a, int b){
int A = find(a);
int B = find(b);
if (A == B) return "DA";
return "NU";
}
//MAIN
int main() {
int n, q; cin >> n >> q;
for (int i = 1; i <= n; i++) dad[i] = i;
for (int i = 1; i <= q; i++){
int tip, a, b; cin >> tip >> a >> b;
if (tip == 1) merge(a, b);
if (tip == 2) cout << query(a, b) << '\n';
}
return 0;
}