Pagini recente » Cod sursa (job #1548613) | Cod sursa (job #1656349) | Cod sursa (job #268841) | Cod sursa (job #1078972) | Cod sursa (job #2919869)
#include <fstream>
#include <iostream>
#define MAX 100002
using namespace std;
int up[MAX];
int d[MAX];
int find(int n){
if(up[n] == n)
return up[n];
else{
up[n] = find(up[n]);
return up[n];
}
}
void join(int a, int b){
a = up[a];
b = up[b];
if(d[a] < d[b])
swap(a, b);
if(d[a] == d[b])
++d[a];
up[b] = a;
}
int main(){
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, m, a, b, q;
fin >> n >> m;
for(int i = 0; i <= n; ++i)
up[i] = i;
for(int i = 0; i < m; ++i){
fin >> q >> a >> b;
if(q == 1)
join(a, b);
else
fout << (find(a) == find(b) ? "DA" : "NU") << "\n";
}
}