Pagini recente » Cod sursa (job #1401071) | Cod sursa (job #1999202) | Cod sursa (job #2196152) | Cod sursa (job #464643) | Cod sursa (job #2928106)
#include<iostream>
#include<vector>
using namespace std;
const int NMAX = 1e5 + 1;
vector<int> t(NMAX), rang(NMAX,1);//t[i] = tatal lui i,daca t[i] = 0,i e fatherless
void unite(int a,int b)
{
if(rang[a] > rang[b])
{
t[b] = a;
}
else
{
t[a] = b;
}
if(rang[b] == rang[a]) rang[b]++;
}
int find(int a)
{
int root = a,c;
while(t[root]) root = t[root];
for(; t[a] ;)
{
c = t[a];
t[a] = root;
a = c;
}
return root;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
int n,q,a,b,t;
cin >> n >> q;
while(q--)
{
cin >> t >> a >> b;
if(t & 1)
{
unite(find(a),find(b));
}
else
{
if(find(a) == find(b))
{
cout << "DA\n";
}
else
{
cout << "NU\n";
}
}
}
}