Pagini recente » Cod sursa (job #1542888) | Cod sursa (job #2843313) | Cod sursa (job #2540580) | Cod sursa (job #2769622) | Cod sursa (job #3313827)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int NMAX = 1e5;
int n, q;
int op, x, y;
int t[NMAX+1];
int rang[NMAX+1];
int Radacina(int nod)
{
if(t[nod] == 0)
return nod;
return t[nod] = Radacina(t[nod]);
}
void Unire(int x, int y)
{
if(rang[y] < rang[x])
t[y] = x;
else
t[x] = y, rang[x]+=(rang[x]==rang[y]);
}
int main()
{
fin >> n >> q;
while(q--)
{
fin >> op >> x >> y;
int r1 = Radacina(x), r2 = Radacina(y);
if(op == 1)
Unire(r1, r2);
else
fout << (r1 == r2 ? "DA\n" : "NU\n");
}
return 0;
}