Pagini recente » Cod sursa (job #2415260) | Cod sursa (job #2467497) | Cod sursa (job #2433203) | Cod sursa (job #349540) | Cod sursa (job #2295997)
#include <fstream>
#define nmax 100001
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,a[nmax];
int m;
int t[nmax],h[nmax];
int Find(int i)
{ if(t[i]==-1) return i;
else Find(t[i]);
}
void Union(int x,int y)
{ int Mx=Find(x);
int My=Find(y);
if(Mx!=My)
if(h[Mx]>h[My])t[Mx]=My;
else t[My]=Mx;
}
int main()
{ fin>>n>>m;
int i,q,x,y;
for(i=1; i<=n; i++) {t[i]=-1; h[i]=1;}
for(i=1; i<=m; i++)
{ fin>>q>>x>>y;
if(q==1) Union(x,y);
if(q==2)
{ if(Find(x)==Find(y)) fout<<"DA";
else fout<<"NU";
fout<<"\n";
}
}
return 0;
}