Pagini recente » Cod sursa (job #1257713) | Cod sursa (job #2629237) | Cod sursa (job #2038794) | Cod sursa (job #669190) | Cod sursa (job #2787381)
#include <fstream>
using namespace std;
ifstream cin ("disjoint.in");
ofstream cout ("disjoint.out");
const int Nmax=100001;
int parinte[Nmax], sizemul[Nmax];
int findradacina (int nod)
{
while (nod!=parinte[nod])
{
nod=parinte[nod];
}
return nod;
}
void unionmul (int rad1,int rad2)
{
if (sizemul[rad1]>sizemul[rad2])
{
parinte[rad2]=rad1;
sizemul[rad1]+=sizemul[rad2];
}
else
{
parinte[rad1]=rad2;
sizemul[rad2]+=sizemul[rad1];
}
}
int main()
{
int n, m, c, x, y;
cin >> n >> m;
for (int i=1; i<=n; i++)
{
parinte[i]=i;
sizemul[i]=1;
}
for (int i=1; i<=m; i++)
{
cin >> c >> x >> y;
int radx=findradacina(x), rady=findradacina(y);
if (c==1)
{
unionmul(radx,rady);
}
else
{
if (radx==rady)
{
cout << "DA\n";
}
else
{
cout << "NU\n";
}
}
}
return 0;
}