Pagini recente » Cod sursa (job #1377917) | Cod sursa (job #2948703) | Cod sursa (job #1427474) | Cod sursa (job #428522) | Cod sursa (job #2637984)
//
// main.cpp
// C++ - teste
//
// Created by Filip Cuciuc on 03/02/2020.
// Copyright © 2020 Filip Cuciuc. All rights reserved.
//
//#include <iostream>
#include <stdio.h>
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>
#include <math.h>
#include <map>
#include <string>
#include <cctype>
//#include "MED.h"
using namespace std;
//using namespace std::chrono;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
const int MAX = 1e5 + 5;
const int INF = 2e9;
int n, m, supertata;
int tata[MAX], lungime[MAX];
int cureCancerFunc(int nod) {
if (nod != tata[nod]) {
tata[nod] = cureCancerFunc(tata[nod]);
}
return tata[nod];
}
void reuniune(int a, int b){
if (lungime[tata[a]] > lungime[tata[b]]) {
int l = lungime[tata[b]];
tata[b] = tata[a];
lungime[tata[a]] += l;
} else {
int l2 = lungime[tata[a]];
tata[a] = tata[b];
lungime[tata[b]] += l2;
}
}
void read() {
cin >> n >> m;
for (int i = 1; i <= n; i++) {
tata[i] = i;
lungime[i] = 1;
}
for (int i = 1; i <= m; i++) {
int op, A, B;
cin >> op >> A >> B;
if (op == 1)
reuniune(cureCancerFunc(A), cureCancerFunc(B));
if (op == 2) {
if (cureCancerFunc(A) == cureCancerFunc(B))
cout << "DA" << '\n';
else
cout << "NU" << '\n';
}
}
}
void solve() {
read();
}
int main() {
solve();
return 0;
}