Pagini recente » Cod sursa (job #2354560) | Cod sursa (job #1995025) | Cod sursa (job #1411625) | Cod sursa (job #1821292) | Cod sursa (job #2797997)
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int N, Q;
int t[NMAX];
// 1 2 3 4 5 6 7 8 9
// 1 1 2 2 1 6 6 6 7
int find(int nod) {
if(t[nod] == nod)
return nod;
return (t[nod] = find(t[nod]));
}
void unite(int nod1, int nod2) {
// O(N)
int r1 = find(nod1);
int r2 = find(nod2);
t[r2] = r1;
}
int main() {
fin >> N >> Q;
for(int i=1; i<=N; i++)
t[i] = i;
while(Q--) {
int P, x, y;
fin >> P >> x >> y;
if(P == 1)
unite(x, y);
else {
if(find(x) == find(y))
fout << "DA\n";
else fout << "NU\n";
}
}
return 0;
}