Pagini recente » Cod sursa (job #2867404) | Cod sursa (job #2866215) | Cod sursa (job #2867109)
#include <fstream>
using namespace std;
ifstream in ("disjoint.in");
ofstream out ("disjoint.out");
int t[200001];
int grad[200001];
int rad(int x)
{
if(t[x]==0)
return x;
t[x]=rad(t[x]);
return t[x];
}
void reuniune(int x,int y)
{
int rx=rad(x),ry=rad(y);
if(grad[x]<grad[y])
{
grad[ry]+=grad[rx];
t[rx]=ry;
}
else
{
grad[rx]+=grad[ry];
t[ry]=rx;
}
}
int main()
{
int n,m;
in>>n>>m;
int t,x,y;
for(int i=1;i<=n;i++)
grad[i]=1;
for(int i=1;i<=m;i++)
{
in>>t>>x>>y;
if(t==1)
{
reuniune(x,y);
}
else
{
if(rad(x)==rad(y))
out<<"DA";
else out<<"NU";
out<<'\n';
}
}
return 0;
}