Pagini recente » Cod sursa (job #3300579) | Cod sursa (job #3358179) | Cod sursa (job #2062073) | Cod sursa (job #3337502) | Cod sursa (job #3322731)
#include <fstream>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
const int NMax=100000;
int n, m, t[NMax+5], w[NMax+5];
void op1(int a, int b)
{
if(w[a]>w[b])
t[a]=b;
else if(w[a]<w[b])
t[b]=a;
else
{
t[a]=b;
w[b]++;
}
}
int Root(int a)
{
while(t[a]!=a)
a=t[a];
return a;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
t[i]=i;
for(int i=1;i<=m;i++)
{
int cer, x, y;
cin>>cer>>x>>y;
if(cer==1) op1(Root(x),Root(y));
else if(Root(x)==Root(y)) cout<<"DA"<<'\n';
else cout<<"NU"<<'\n';
}
}