Pagini recente » Cod sursa (job #238319) | Cod sursa (job #3124283) | Cod sursa (job #631038) | Cod sursa (job #2158177) | Cod sursa (job #2940003)
#include <iostream>
#include <vector>
#include <assert.h>
#include <cstdio>
std::vector<int> parent(100001,0),size(100001,0);
int a, x, y, mult, op;
int getRoot(int u)
{ if(parent[u]==u)
return u;
else return parent[u]=getRoot(parent[u]);
}
void join(int u, int v)
{ u=getRoot(u);
v=getRoot(v);
if(size[u]<size[v])
std::swap(u,v);
parent[v]=u;
size[u]+=size[v];
}
int main(){
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
std::cin>>mult>>op;
for(int i=1;i<=mult;i++)parent[i]=i,size[i]=1;
while(op)
{ std::cin>>a>>x>>y;
if(a==1)join(x,y);
else if(getRoot(x)==getRoot(y))std::cout<<"DA\n";
else std::cout<<"NU\n";
op--;
}
return 0;
}