Pagini recente » Cod sursa (job #1404675) | Cod sursa (job #2113301) | Cod sursa (job #2126412) | Cod sursa (job #2880062) | Cod sursa (job #2199404)
#include <fstream>
using namespace std;
const int N=100001;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int n,m,t[N],nr[N];
int radacina(int x)
{
if(t[x]==0)
return x;
else
{
t[x]=radacina(t[x]);
return t[x];
}
}
void reuniune (int x,int y)
{
int rx=radacina(x);
int ry=radacina(y);
if(nr[rx]<nr[ry])
{
t[rx]=ry;
nr[ry]+=nr[rx];
}
else
{
t[ry]=rx;
nr[rx]+=nr[ry];
}
}
bool aceeasi(int x,int y)
{
return(radacina(x)==radacina(y));
}
int main()
{
int a,b,c;
in>>n>>m;
for(int i=1;i<=m;i++)
{
in>>c>>a>>b;
if(c==1)
reuniune(a,b);
else if(aceeasi(a,b))
out<<"DA";
else
out<<"NU";
}
return 0;
}