Pagini recente » Cod sursa (job #1402293) | Cod sursa (job #1774399) | Cod sursa (job #209502) | Cod sursa (job #1403884) | Cod sursa (job #602200)
Cod sursa(job #602200)
#include <cstdio>
#include <algorithm>
#define NMAX 1000000
using namespace std;
int n, m, i, T[NMAX], rang[NMAX] ;
int multime (int i){
if (T[i]==i) return i;
else multime(T[i]);
}
void reuneste(int i, int j){
i = multime(i);
j = multime(j);
if (i==j) return;
if (rang[i]>rang[j]) T[j]=i;
else T[i]=j;
if(rang[i]==rang[j]) ++rang[i];
}
int main(){
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1;i<=n;i++) rang[i]=0,T[i]=i;
for(i=1;i<=m;i++){
int tip, x, y;
scanf("%d%d%d",&tip,&x,&y);
if (tip==1) reuneste(x,y);
if (tip==2)
if(multime(x)==multime(y)) printf("DA\n");
else printf("NU\n");
}
return 0;
}