Pagini recente » Cod sursa (job #385839) | Cod sursa (job #480983) | Cod sursa (job #2510483) | Cod sursa (job #311161) | Cod sursa (job #3036593)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int v[100002],n,m,t,x,y,i,j,z,a[100002],nr,g[100002];
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)
{
v[i]=i;
g[i]=1;
}
for(i=1;i<=m;i++)
{
fin>>t>>x>>y;
if(t==1)
{
nr=0;
while(v[x]!=x)
{
nr++;
a[nr]=x;
x=v[x];
}
for(j=1;j<=nr;j++) v[j]=x;
nr=0;
while(v[y]!=y)
{
nr++;
a[nr]=y;
y=v[y];
}
for(j=1;j<=nr;j++) v[j]=y;
if(g[x]>g[y])
{
v[y]=x;
g[x]+=g[y];
}
else
{
v[x]=y;
g[y]+=g[x];
}
}
if(t==2)
{
nr=0;
while(v[x]!=x)
{
nr++;
a[nr]=x;
x=v[x];
}
for(j=1;j<=nr;j++) v[j]=x;
nr=0;
while(v[y]!=y)
{
nr++;
a[nr]=y;
y=v[y];
}
for(j=1;j<=nr;j++) v[j]=y;
if(x==y) fout<<"DA\n";
else fout<<"NU\n";
}
}
fin.close();
fout.close();
return 0;
}