Pagini recente » Cod sursa (job #1486052) | Cod sursa (job #203898) | Cod sursa (job #1962030) | Cod sursa (job #2627718) | Cod sursa (job #539249)
Cod sursa(job #539249)
#include<fstream>
#define nmax 100005
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m;
int qq[nmax],rr[nmax];
int find(int nod)
{
int r,x,y;
//caut radacina
for(r=nod;r!=qq[r];r=qq[r]);
x=nod;
//compresia arborelui
while(x!=qq[x])
{
y=qq[x];
qq[x]=r;
x=y;
}
return r;
}
void unesc(int x,int y)
{
if(rr[x]>rr[y])
qq[y]=x;
else
qq[x]=y;
if(rr[x]==rr[y])
++rr[y];
}
int main()
{
int i,x,y,cod;
fin>>n>>m;
for(i=1;i<=n;++i)
{
//init
qq[i]=i;
rr[i]=1;
}
for(i=1;i<=m;++i)
{
fin>>cod>>x>>y;
if(cod==1)
if(find(x)!=find(y))
unesc(find(x),find(y));
else;
else
if(find(x)==find(y))
fout<<"DA\n";
else
fout<<"NU\n";
}
return 0;
}