Pagini recente » Cod sursa (job #419550) | Cod sursa (job #424957) | Cod sursa (job #2334204) | Cod sursa (job #2248835) | Cod sursa (job #2951447)
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n,m,t,x,y,tt[100005],d[100005];
int findd_radacina(int x)
{
int r;
for(r=x;r!=tt[r];r=tt[r]);
for(int h=x;tt[h]!=h;h=tt[h])
tt[h]=r;
return r;
}
void unific(int x, int y)
{
if(d[x]>d[y])
tt[y]=x;
else
if(d[x]<d[y])
tt[x]=y;
else
if(d[x]==d[y])
{
tt[x]=y;
d[y]++;
}
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;i++)
tt[i]=i,d[i]=1;
for(int i=1;i<=m;i++)
{
f>>t>>x>>y;
if(t==2)
{
if(findd_radacina(x)==findd_radacina(y))
g<<"DA";
else
g<<"NU";
g<<'\n';
}
else
{
if(!(findd_radacina(x)==findd_radacina(y)))
unific(findd_radacina(x),findd_radacina(y));
}
}
return 0;
}