Pagini recente » Diferente pentru teorema-chineza-a-resturilor intre reviziile 61 si 89 | Monitorul de evaluare | Cod sursa (job #2802040) | Cod sursa (job #2754544) | Cod sursa (job #385587)
Cod sursa(job #385587)
#include<cstdio>
#define N 100001
int gr[N],rang[N],n,m,x,y,q,u,v;
int find(int x)
{
if (x!=gr[x])
gr[x]=find(gr[x]);
return gr[x];
}
void unesc(int x, int y)
{
if (rang[x]<rang[y])
gr[x]=y;
else
{
gr[y]=x;
rang[x]+=(rang[x]==rang[y]);
}
}
void citire()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
for (int i=1; i<=n; ++i)
gr[i]=i,rang[i]=1;
while (m--)
{
scanf("%d%d%d",&q,&x,&y);
u=find(x);
v=find(y);
if (q-1)
{
if(u==v)
printf("DA\n");
else
printf("NU\n");
}
else
unesc(u,v);
}
}
int main()
{
citire();
return 0;
}