Pagini recente » Cod sursa (job #1977052) | Cod sursa (job #1640504) | Cod sursa (job #2324914) | Cod sursa (job #15659) | Cod sursa (job #273984)
Cod sursa(job #273984)
#include<stdio.h>
#include<iostream.h>
#define NMAX 100000
int n,m,op,x,y;
int rad[NMAX+5],rang[NMAX+5];
int find_rad(int nod)
{
int radacina=nod,y;
while(rad[radacina]!=radacina) radacina=rad[radacina];
while(rad[nod]!=nod) { y=rad[nod]; rad[nod]=radacina; nod=y; }
return radacina; }
int unite(int rad1,int rad2)
{
if(rang[rad1] > rang[rad2]) rad[rad2]=rad1;
else rad[rad1]=rad2;
if(rang[rad1]==rang[rad2]) rang[rad2]+=1;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d %d",&n,&m);
for(int i=1; i<=n; i++) rad[i]=i, rang[i]=1;
while(m--)
{
scanf("%d %d %d",&op,&x,&y);
if(op==1) unite( find_rad(x), find_rad(y) );
else if( find_rad(x)==find_rad(y) ) printf("DA\n");
else printf("NU\n");
}
return 0;
}