Pagini recente » Diferente pentru implica-te/arhiva-educationala intre reviziile 70 si 69 | Cod sursa (job #3121162) | Cod sursa (job #1327186) | Cod sursa (job #727198) | Cod sursa (job #1161899)
#include <cstdio>
#define Nmax 100005
using namespace std;
int t[Nmax];
inline int Find(int a)
{
int rad,i=a;
while(t[a]>0)
a=t[a];
rad=a;
while(t[i]>0)
{
a=t[i];
t[i]=rad;
i=a;
}
return rad;
}
inline void Union(int a, int b)
{
t[a]+=t[b];
t[b]=a;
}
int main()
{
int N,M,tip,a,b,i;
freopen ("disjoint.in","r",stdin);
freopen ("disjoint.out","w",stdout);
scanf("%d%d", &N,&M);
for(i=1;i<=N;++i)
t[i]=-1;
while(M--)
{
scanf("%d%d%d", &tip,&a,&b);
if(tip==1)
Union(Find(a),Find(b));
else
if(Find(a)==Find(b))
printf("DA\n");
else
printf("NU\n");
}
return 0;
}