Pagini recente » Cod sursa (job #431677) | Cod sursa (job #2156606) | Cod sursa (job #3152518) | Cod sursa (job #1753681) | Cod sursa (job #2075169)
#include <bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int t[100051],n,m,h[100051],i,cod,x,y;;
int fnd(int x)
{
int r=x;
while (t[r])
{
r=t[r];
}
int y=x;
while (t[y])
{
int t1=t[y];
t[y]=r;
y=t1;
}
return r;
}
void un(int x,int y)
{
int c,r1,r2;
r1=fnd(x);
r2=fnd(y);
if (h[r1]<h[r2])
{
t[r2]=r1;
c=r1;
}
else
{
t[r1]=r2;
c=r1;
}
if (h[x]==-h[y]) h[c]++;
}
int main()
{
f>>n>>m;
for (i=1;i<=n;i++)
{
t[i]=0;
h[i]=1;
}
for (i=1;i<=m;i++)
{
f>>cod>>x>>y;
if (cod==2)
{
if (fnd(x)==fnd(y)) g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
else un(x,y);
}
return 0;
}