Pagini recente » Cod sursa (job #1438071) | Profil tudorbuhnia | Cod sursa (job #308568) | Cod sursa (job #1438091) | Cod sursa (job #3272246)
#include <fstream>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int n, m, c, x, y, T[100001], Rang[100001];
int Radacina(int k)
{
if(T[k] == 0)
return k;
else
{
int x = Radacina(T[k]);
T[k] = x;
return x;
}
}
void Unire(int k, int p)
{
int rk = Radacina(k), rp = Radacina(p);
if(rk != rp)
{
if(Rang[rk] > Rang[rp])
T[rp] = rk;
else
{
T[rk] = rp;
if(Rang[rk] == Rang[rp])
Rang[rp] ++;
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>c>>x>>y;
if(c==1)
{
Unire(x, y);
}
else
{
if(Radacina(x)==Radacina(y)) cout<<"DA"<<'\n';
else cout<<"NU"<<'\n';
}
}
return 0;
}