Pagini recente » Cod sursa (job #1151615) | Cod sursa (job #1793408) | Cod sursa (job #1317505) | Cod sursa (job #349154) | Cod sursa (job #2915268)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, m;
int tata[100009], adancime[100009];
int radacina(int nod)
{
if(tata[nod]==nod)
{
return nod;
}
return tata[nod] = radacina(tata[nod]);
}
void adaug(int a, int b)
{
int rad_a = radacina(a);
int rad_b = radacina(b);
if(rad_a==rad_b)
{
return;
}
if(adancime[rad_a]>=adancime[rad_b])
{
//devine rad_a
tata[rad_b]=rad_a;
}
else
{
tata[rad_a]=rad_b;
}
if(adancime[rad_a]==adancime[rad_b])
{
adancime[rad_a]++;
}
}
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
{
tata[i]=i;
adancime[i]=1;
}
for(int i=1;i<=m;i++)
{
int a, b;
int op;
fin>>op>>a>>b;
if(op==1)
{
adaug(a,b);
}
else if(radacina(a)==radacina(b))
{
fout<<"DA"<<'\n';
}
else
{
fout<<"NU"<<'\n';
}
}
return 0;
}