Pagini recente » Cod sursa (job #458633) | Cod sursa (job #1745541) | Cod sursa (job #60547) | Cod sursa (job #1987034) | Cod sursa (job #2328689)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n,q,t[100001],h[100001];
int fin(int x)
{
int r=x;
while(t[r]!=r)r=t[r];
int y=x,aux;
while(y!=r)
{
aux=t[y];
t[y]=r;
y=aux;
}
return r;
}
void siuu(int x,int y)
{
int c;
x=fin(x);
y=fin(y);
if(h[x]<h[y])
{
t[x]=y;
c=y;
}
else
{
t[y]=x;
c=x;
}
if(h[x]==h[y])h[c]++;
}
int main()
{
f>>n>>q;
for(int i=1;i<=n;++i)
{
h[i]=1;
t[i]=i;
}
for(int i=1;i<=q;++i)
{
int x,a,b;
f>>x>>a>>b;
if(x==1)
{
siuu(a,b);
}
else
{
a=fin(a);
b=fin(b);
if(a==b)
g<<"DA";
else g<<"NU";
g<<'\n';
}
}
return 0;
}