Pagini recente » Cod sursa (job #2128603) | Cod sursa (job #1078240) | Cod sursa (job #863253) | Cod sursa (job #2520401) | Cod sursa (job #276908)
Cod sursa(job #276908)
#include<fstream.h>
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int *t,*rg,n,m,i,o,a,b;
int rad(int nod)
{
int y;
int x;
x=nod;
while(t[nod]!=nod)
{
nod=t[nod];
}
while(t[x]!=x)
{
y=t[x];
t[x]=nod;
x=y;
}
return nod;
}
int main(void)
{
int k,l;
in>>n>>m;
t=new int[n+21];
rg=new int[n+21];
for(i=1;i<=n;i++)
{
t[i]=i;
rg[i]=1;
}
for(i=1;i<=m;i++)
{
in>>o>>a>>b;
if(o==1)
{
k=rad(a);
l=rad(b);
if(rg[k]<rg[l]) t[k]=l;
else t[l]=k;
if(rg[k]==rg[l]) rg[l]++;
}
else
{
if(rad(a)==rad(b)) out<<"DA\n";
else out<<"NU\n";
}
}
in.close();
out.close();
delete t;
delete rg;
return 0;
}