Pagini recente » Cod sursa (job #2338349) | Cod sursa (job #1581833) | Cod sursa (job #2300304) | Cod sursa (job #1469395) | Cod sursa (job #2517944)
#include <bits/stdc++.h>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int n,m;
int unire[100001];
int sizeU[100001];
int rad(int x)
{
while(x!=unire[x])
x=unire[x];
return x;
}
void uneste(int a,int b)
{
int r1=rad(a);
int r2=rad(b);
if(sizeU[r1]<sizeU[r2])
swap(r1,r2);
unire[r2]=r1;
sizeU[r1]+=sizeU[r2];
}
int main()
{
in>>n>>m;
for(int i=1;i<=n;i++)
{
unire[i]=i;
sizeU[i]=1;
}
int q,a,b;
for(int k=1;k<=m;k++)
{
in>>q>>a>>b;
if(q==1)
uneste(a,b);
else
if(rad(a)!=rad(b))
out<<"NU"<<'\n';
else
out<<"DA"<<'\n';
}
return 0;
}