Pagini recente » Cod sursa (job #1425655) | Cod sursa (job #87603) | Cod sursa (job #3138012) | Cod sursa (job #602013) | Cod sursa (job #2112105)
#include <fstream>
#define nmax 100005
using namespace std;
int p[nmax], r[nmax], n, m;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int find_set(int x) {
if(p[x] == x)
return x;
p[x] = find_set(p[x]);
return p[x];
}
void unite(int x, int y) {
int sx = find_set(x);
int sy = find_set(y);
if(r[sx] < r[sy])
p[sx] = sy;
else
if(r[sx] > r[sy])
p[sy] = sx;
else {
p[sx] = sy;
r[sx]++;
}
}
int main() {
fin >> n >> m;
for(int i = 1;i <= n; ++i)
p[i] = i;
int x, op, y;
for(int i = 0; i < m; ++i) {
fin >> op >> x >> y;
if(op == 1)
unite(x,y);
else
if(find_set(x) == find_set(y))
fout << "DA" << endl;
else
fout << "NU" << endl;
}
return 0;
}