Pagini recente » Cod sursa (job #1805502) | Cod sursa (job #1931680) | Cod sursa (job #2668939) | Cod sursa (job #2499895) | Cod sursa (job #2722324)
#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;
}
void uneste(int nod1, int nod2)
{
int r1=afla_radacina(nod1);
int r2=afla_radacina(nod2);
if(h[r1]<h[r2])tata[r1]=r2;
else if(h[r2]<h[r1])tata[r2]=r1;
else tata[r1]=r2,h[r2]++;
}
int query(int nod1, int nod2)
{
int r1=afla_radacina(nod1);
int r2=afla_radacina(nod2);
if(r1==r2)return 1;
else return 0;
}
int n,i,m,c,x,y,ans;
int main()
{
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>c>>x>>y;
if(c==1)uneste(x,y);
else
{
ans=query(x,y);
if(ans==1)g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
}
return 0;
}