Pagini recente » Cod sursa (job #2627811) | Cod sursa (job #1116139) | Cod sursa (job #1646587) | Cod sursa (job #3131557) | Cod sursa (job #2075140)
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int t[100001],h[100001];
int findd (int x)
{
int aux,x1=x;
while(t[x1]!=0)
{
x1=t[x1];
}
int x2=x;
while(t[x2]!=0)
{
aux=t[x2];
t[x2]=x1;
x2=aux;
}
return x1;
}
void unionn (int x,int y)
{
int r1,c,r2;
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])h[c]++;
}
int n,m,i,op,el1,el2;
int main()
{
f>>n>>m;
for(i=1; i<=n; i++)
{
h[i]=1;
t[i]=0;
}
for(i=1; i<=m; i++)
{
f>>op>>el1>>el2;
if(op==1)
{
unionn(el1,el2);
}
else
{
if(findd(el1)==findd(el2))g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
}
return 0;
}