Pagini recente » Cod sursa (job #2532347) | Cod sursa (job #1395383) | Cod sursa (job #8854) | Cod sursa (job #2744421) | Cod sursa (job #697100)
Cod sursa(job #697100)
#include <cstdio>
using namespace std;
#define maxn 100007
#define in "disjoint.in"
#define out "disjoint.out"
int t[maxn],h[maxn];
inline void unite(int x,int y)
{
if(h[x] > h[y])
t[y] = x;
else
t[x] = t[y];
if(h[x] == h[y])
h[y]++;
}
inline int find(int x)
{
int r = x,y = x;
while(r != t[r])
r = t[r];
while(y != r)
t[y] = r, y = t[r];
return r;
}
int main()
{
int N,M,i,type,x,y;
freopen (in,"r",stdin);
freopen (out,"w",stdout);
scanf("%d %d",&N,&M);
for(i = 1; i <= N; i++)
t[i] = i , h[i] = 1;
for(i = 1; i <= M; i++)
{
scanf("%d %d %d",&type,&x,&y);
if(type == 1)
unite(find(x),find(y));
else
if(find(x) == find(y))
printf("DA\n");
else
printf("NU\n");
}
return 0;
}