Pagini recente » Cod sursa (job #1428057) | Cod sursa (job #194421) | Cod sursa (job #2495629) | Cod sursa (job #2790021) | Cod sursa (job #2350429)
#include <fstream>
#define maxn 100005
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int n,m,h[maxn],rad[maxn];
int findd(int x)
{
int r,i,y;
r=rad[x];
while(r!=rad[r])
r=rad[r];
while(x!=r)
{
y=rad[x];
rad[x]=r;
x=y;
}
return r;
}
void unire(int x,int y)
{
if(h[x]>h[y])
rad[y]=x;
else
rad[x]=y;
if(h[x]==h[y])
h[y]++;
}
int main()
{
int i,j,k,x,y;
cin>>n>>m;
for(i=1;i<=n;i++)
{
rad[i]=i;
h[i]=1;
}
for(i=1;i<=m;i++)
{
cin>>k>>x>>y;
if(k==2)
{
if(findd(x)==findd(y))
cout<<"DA"<<'\n';
else
cout<<"NU"<<'\n';
}
else
{
unire(findd(x),findd(y));
}
}
return 0;
}