Pagini recente » Cod sursa (job #80108) | Cod sursa (job #2320337) | Cod sursa (job #1529739) | Cod sursa (job #2054935) | Cod sursa (job #2075136)
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int t[100001],h[100001];
int findd(int x)
{ int x1=x;
while(t[x1]!=0)x1=t[x1];
int x2=x,aux;
while(t[x2]!=0)
{
aux=t[x2];
t[x2]=x1;
x2=aux;
}
return x1;
}
void unionn(int x,int y)
{
int r1,r2,c;
r1=findd(x);
r2=findd(y);
if(h[r1]>h[r2]){c=r1;t[r2]=r1;}
else{c=r2;t[r1]=r2;}
if(h[r1]==h[r2])h[c]++;
}
int main()
{int n,m,i,x,y,p;
f>>n>>m;
for(i=1;i<=n;i++)
{
t[i]=0;
h[i]=1;
}
for(i=1;i<=m;i++)
{
f>>p>>x>>y;
if(p==1)
{
unionn(x,y);
}
else{
if(findd(x)==findd(y))g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
}
return 0;
}