Pagini recente » Cod sursa (job #2813644) | Cod sursa (job #117439) | Cod sursa (job #897067) | Cod sursa (job #534144) | Cod sursa (job #403658)
Cod sursa(job #403658)
#include<algorithm>
using namespace std;
#include<vector>
#include<queue>
#define DIM 100005
vector <int> lst[DIM];
queue <int> c;
int r[DIM],t[DIM],n;
void show ()
{
int i;
for(i=1;i<=n;++i)
printf("%d ",r[i]);
printf("\n");
for(i=1;i<=n;++i)
printf("%d ",t[i]);
printf("\n\n");
}
int find (int &x)
{
if(x != t [x])
x= find( t[ x ] );
return t[x] ;
}
void unite (int x,int y)
{
if(r[x]>r[y])
{
unite(y,x);
return ;
}
r[y]+=r[x];
t[x]=y;
}
int main ()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
int i,m,q,x,y;
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)
t[i]=i;
for(i=1;i<=m;++i)
{
// show ();
scanf("%d%d%d",&q,&x,&y);
if(q==1)
unite (find(x),find(y));
else
{
if(find(x)==find(y))
printf("DA\n");
else
printf("NU\n");
}
}
return 0;
}