Pagini recente » Cod sursa (job #1964704) | Cod sursa (job #2531555)
#include <bits/stdc++.h>
#define NMAX 100001
using namespace std;
typedef long long ll;
string file="disjoint";
ifstream fin(file+".in");
ofstream fout(file+".out");
int n,m,op;
int dad[NMAX],h[NMAX];
struct muchie{
int x,y;
}muchie[NMAX];
int rad(int x)
{
if(dad[x]) return rad(dad[x]);
return x;
}
void unificare(int x,int y)
{
if(h[x]==h[y]){
dad[x]=y;
h[y]++;
}
else if(h[x]<h[y])
dad[x]=y;
else
dad[y]=x;
}
int main()
{
int i;
fin>>n>>m;
for(i=1;i<=m;i++){
fin>>op>>muchie[i].x>>muchie[i].y;
if(op==1){
int r1=rad(muchie[i].x);
int r2=rad(muchie[i].y);
if(r1!=r2){
unificare(r1,r2);
}
}
else{
if(rad(muchie[i].x)==rad(muchie[i].y)) fout<<"DA\n";
else fout<<"NU\n";
}
}
return 0;
}