Pagini recente » Cod sursa (job #2781771) | Cod sursa (job #2629221) | Cod sursa (job #1055922) | Cod sursa (job #9030) | Cod sursa (job #1753687)
#include <cstdio>
using namespace std;
const int nmx = 100002;
int n,m;
int val[nmx],tata[nmx];
void initializare()
{
for(int i = 1; i <= n; ++i)
{
val[i] = 1;
tata[i] = i;
}
}
int da_grupa(int nod)
{
int aux = nod;
while(nod != tata[nod])
nod = tata[nod];
while(aux != tata[aux])
{
int aux2 = tata[aux];
tata[aux] = nod;
aux = aux2;
}
return nod;
}
void uneste(int nod1, int nod2)
{
if(val[nod1] > val[nod2])
tata[nod2] = nod1;
else
tata[nod1] = nod2;
if(val[nod1] == val[nod2])
++ val[nod2];
}
void citire()
{
scanf("%d %d", &n, &m);
initializare();
for(int i = 1; i <= m; ++i)
{
int operatie, nod1, nod2;
scanf("%d %d %d", &operatie, &nod1, &nod2);
if(operatie == 1)
uneste(da_grupa(nod1),da_grupa(nod2));
else
printf("%s\n", da_grupa(nod1) == da_grupa(nod2) ? "DA" : "NU");
}
}
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
citire();
return 0;
}