Pagini recente » Cod sursa (job #1137) | Cod sursa (job #3057) | Cod sursa (job #333733) | Cod sursa (job #1176949) | Cod sursa (job #2355058)
#include <fstream>
#define NMAX 100002
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int n, m, TT[NMAX], RG[NMAX];
int Find(int x){
for(; TT[x] != x; x = TT[x]);
return x;
}
void Unite(int x, int y){
if(RG[x] > RG[y])
TT[y] = x;
else
TT[x] = y;
if(RG[x] == RG[y])
RG[y]++;
}
int main(){
cin>>n>>m;
for(int i=1; i<=n; i++){
TT[i] = i;
RG[i] = 1;
}
for(int i=1; i<=m; i++){
int p, x, y; cin>>p>>x>>y;
if(p==1){
Unite(Find(x), Find(y));
}else{
if(Find(x) != Find(y))
cout<<"NU"<<'\n';
else
cout<<"DA"<<'\n';
}
}
return 0;
}