Pagini recente » Cod sursa (job #2377334) | Cod sursa (job #2510958) | Cod sursa (job #1977217) | Cod sursa (job #329171) | Cod sursa (job #3271839)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
const int Nmax=100001;
int t[Nmax],aux,v[Nmax],h[Nmax],n,m,p,x,y,aux2;
int radacina(int x)
{int y;
y=x;
aux=y;
while(h[y]!=y)
y=t[y];
aux2=x;
while(x!=y)
{
aux=t[x];
t[x]=y;
x=aux;
}
return y;
}
void uniune(int x , int y)
{int r1 , r2;
r1=radacina(x);
r2=radacina(y);
if(h[r1]>h[r2])
t[r2]=r1;
else
t[r1]=r2;
if(h[r1]==h[r2])
h[r2]++ ;
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;++i)
{t[i]=i;
h[i]=1;
}
for(int i=1;i<=m;++i)
{
f>>p>>x>>y;
if(p==1)
uniune(x,y);
else
{
if(radacina(x)==radacina(y))
g<<"DA"<<'\n';
else
g<<"NU"<<'\n';
}
}
return 0;
}