Pagini recente » Cod sursa (job #149552) | Cod sursa (job #1858880) | Cod sursa (job #1386455) | Cod sursa (job #1988067) | Cod sursa (job #1052307)
#include <fstream>
#define nmax 100001
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n, t[nmax], r[nmax];
void join(int x,int y)
{
if(r[x]>r[y])
t[y]=x;
else
if(r[x]<r[y]) t[x]=y;
else { t[x]=y; r[y]++; }
}
int tata(int x)
{
while(x!=t[x])
x=t[x];
return x;
}
int main()
{
f>>n;
int i,q,a,x,y,t1,t2;
for(i=1;i<=n;i++) t[i]=i;
f>>q;
while(q--)
{
f>>a;
f>>x>>y;
if(a==1)
{
t1=tata(x);
t2=tata(y);
join(t1,t2);
}
else
{
if(tata(x)==tata(y))
g<<"DA\n";
else g<<"NU\n";
}
}
}