Pagini recente » Cod sursa (job #1430723) | Cod sursa (job #1591448) | Monitorul de evaluare | Cod sursa (job #563351) | Cod sursa (job #3310305)
#include <bits/stdc++.h>
#define inf 2000000
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,T[100002],m,c;
int rang[100002];
int Rad(int nod)
{
if(T[nod]==0)
return nod;
else
{
int x=Rad(T[nod]);
T[nod]=x;
return x;
}
}
void unire(int a, int b)
{
if(rang[a]>rang[b])
T[b]=a;
else
{
T[a]=b;
if(rang[a]==rang[b])
rang[b]++;
}
}
int main()
{
fin>>n>>m;
for(int i=1;i<=m;++i)
{
fin>>c;
int x,y;
fin>>x>>y;
int rx=Rad(x);
int ry=Rad(y);
if(c==1)
unire(rx,ry);
else
if(rx==ry)
fout<<"DA"<<'\n';
else
fout<<"NU"<<'\n';
}
}