Pagini recente » Cod sursa (job #2108836) | Cod sursa (job #2557119) | Cod sursa (job #327894) | Cod sursa (job #667190) | Cod sursa (job #2886402)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int t[100005],x,y,c,n,i,op,rang[100005];
int radacina(int x)
{
if(t[x]==0)
return x;
else
{
int k=radacina(t[x]);
t[x]=k;
return k;
}
}
void unire(int x,int y)
{
int rx=radacina(x),ry=radacina(y);
if(rx!=ry)
{
if(rang[rx]<rang[ry])
t[rx]=ry;
else
if(rang[ry]<rang[rx])
t[ry]=rx;
else
t[ry]=rx, rang[rx]++;
}
}
int main()
{
f>>n>>op;
for(i=1;i<=n;i++)
{
t[i]=0,rang[i]=0;
}
for(i=1;i<=op;i++)
{
f>>x>>y>>c;
if(x==1)
{
unire(y,c);
}
else
if(radacina(y)==radacina(c))
{
g<<"DA"<<'\n';
}
else g<<"NU"<<'\n';
}
return 0;
}