Pagini recente » Cod sursa (job #677954) | Cod sursa (job #1072118) | Cod sursa (job #584994) | Cod sursa (job #1601709) | Cod sursa (job #3267084)
#include <fstream>
using namespace std;
ifstream cin ("disjoint.in");
ofstream cout ("disjoint.out");
int n,m,x,y,t[100100],nr[100100],op;
int gasire (int z)
{
int p;
if (z==t[z]) return z;
else
{
p=gasire(t[z]);
t[z]=p;
return p;
}
}
void unire ()
{
int a=gasire(x);
int b=gasire(y);
if (a==b) return ;
if (nr[a]<nr[b])
{
nr[a]=nr[a]+nr[b];
t[b]=a;
}
else
{
nr[b]=nr[a]+nr[b];
t[a]=b;
}
}
int main()
{
cin>>n>>m;
for (int i=1; i<=n; i++) t[i]=i;
while (m)
{
m--;
cin>>op>>x>>y;
if (op==1) unire();
else
{
if (gasire(x)==gasire(y)) cout<<"DA";
else cout<<"NU";
cout<<'\n';
}
}
return 0;
}