Pagini recente » Cod sursa (job #273787) | Cod sursa (job #799051) | Cod sursa (job #723011) | Cod sursa (job #1107022) | Cod sursa (job #2662205)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m;
struct nod
{
int info;
nod* tata;
} * t[100001];
int radacina(nod* x)
{
while (x->tata!=NULL)
x=x->tata;
return x->info;
}
void unire(nod *& a,nod*& b)
{
if (a->info>b->info)
{
int rad=radacina(a);
t[rad]->tata=b;
}
else
{
int rad=radacina(b);
t[rad]->tata=a;
}
}
int main()
{
fin>>n>>m;
int x,y,op;
for (int i=1;i<=n;i++)
{
t[i]=new nod();
t[i]->info=i;
t[i]->tata=NULL;
}
for (int i=1;i<=m;i++)
{
fin>>op;
fin>>x>>y;
if (op==1)
{
unire(t[x],t[y]);
}
else
{
if (radacina(t[x])==radacina(t[y]))
fout<<"DA\n";
else
fout<<"NU\n";
}
}
return 0;
}