Pagini recente » Cod sursa (job #725722) | Cod sursa (job #390605) | Cod sursa (job #2599406) | Cod sursa (job #1271522) | Cod sursa (job #3271821)
#include <fstream>
#include <vector>
#include <climits>
using namespace std;
fstream in("disjoint.in");
ofstream out("disjoint.out");
int t[100001],r[100001];
int n,m,p;
int rad(int nod)
{
if (nod != t[nod])
{
int rad1 = rad(t[nod]);
t[nod] = rad1;
return rad1;
}
return nod;
}
void prn(int a, int b)
{
if (r[a]>r[b])
t[a]=b;
else if (r[a]<r[b])
t[b]=a;
else
{
t[b]=a;
r[a]++;
}
}
int main()
{
in>>n>>m;
for (int i=1;i<=n;i++) {
r[i]=t[i]=i;
}
for (int i=1;i<=m;i++)
{
int a,b;
in>>p>>a>>b;
if (p==1) prn(rad(a),rad(b));
else if (rad(a) == rad(b))
out<<"DA"<<'\n';
else out<<"NU"<<'\n';
}
return 0;
}