Pagini recente » Cod sursa (job #333989) | Cod sursa (job #2917464) | Cod sursa (job #192451) | Cod sursa (job #1964536) | Cod sursa (job #454986)
Cod sursa(job #454986)
#include <fstream>
#define size 100010
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
long n,m,k,x,y,i,t[size],r[size];
int init()
{
for (int p=1;p<=n;++p){
t[p]=p;
r[p]=1;
}
return 0;
}
long find(long w)
{
long u,m;
for (u=w;t[u]!=u;u=t[u]);
/* while (t[w]!=w){
m=t[w];
t[w]=u;
w=m;
}
*/
return u;
}
int ins(long e,long a)
{
/* if (r[e]>r[a]) t[a]=e; else
t[e]=a;
if (r[e]==r[a]) ++r[a];*/
t[a]=e;
return 0;
}
int main()
{
in >> n >> m;
init();
for (i=1;i<=m;++i){
in >> k >> x >> y;
if (k==1) ins(find(x),find(y)); else
if (k==2)
if (find(x)==find(y)) out << "DA\n"; else
out << "NU\n";
}
in.close();
out.close();
return 0;
}