Pagini recente » Cod sursa (job #427793) | Cod sursa (job #416910) | Cod sursa (job #2192339) | Cod sursa (job #2706364) | Cod sursa (job #2075142)
#include <fstream>
using namespace std;
int t[100010],h[100010],n,m,i,op,el1,el2;
int findd (int x)
{
int r=x;
while(t[r]) r=t[r];
int y=x;
while(y!=r)
{
int t1=t[y];
t[y]=r;
y=t1;
}
return r;
}
void unionn (int x, int y)
{
int r1,r2,c;
r1=findd(x);
r2=findd(y);
if(h[r1]>h[r2])
{
t[r2]=r1;
c=r1;
}
else
{
t[r1]=r2;
c=r2;
}
if(h[r1]==h[r2]) c++;
}
int main()
{
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
fin>>n>>m;
for(i=1;i<=n;i++)
{
h[i]=1;
t[i]=0;
}
for(i=1;i<=m;i++)
{
fin>>op>>el1>>el2;
if(op==1) unionn(el1,el2);
else
{
if(findd(el1)==findd(el2)) fout<<"DA"<<'\n';
else fout<<"NU"<<'\n';
}
}
return 0;
}