Pagini recente » Cod sursa (job #1645880) | Cod sursa (job #2120400) | Cod sursa (job #1494866) | Cod sursa (job #1513909) | Cod sursa (job #602199)
Cod sursa(job #602199)
#include <cstdio>
#include <algorithm>
using namespace std;
pair < int,int> Ml[100000];
int n, m, i, j, x, y, T[100000], rang[100000] ;
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;
}