Pagini recente » Cod sursa (job #2654836) | Cod sursa (job #141902) | Cod sursa (job #141002) | Cod sursa (job #3193737) | Cod sursa (job #2737018)
#include <bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int tata[100100],h[100100];
int afla_radacina(int nod)
{
while(tata[nod]!=0)nod=tata[nod];
return nod;
}
int uneste(int nod1, int nod2)
{
int r1=afla_radacina(nod1);
int r2=afla_radacina(nod2);
if(r1==r2)return 1;
if(h[r1]<h[r2])tata[r1]=r2;
else if(h[r2]<h[r1])tata[r2]=r1;
else tata[r2]=r1,h[r1]++;
return 0;
}
int n,m,i,c,a,b;
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)h[i]=1,tata[i]=0;
for(i=1;i<=m;i++)
{
f>>c>>a>>b;
if(c==1)uneste(a,b);
else
{
bool ok=uneste(a,b);
if(ok)g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
}
return 0;
}