Pagini recente » Cod sursa (job #1914988) | Cod sursa (job #454191) | Cod sursa (job #3249170) | Cod sursa (job #724696) | Cod sursa (job #2325930)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int NMax = 100000;
int TT[NMax + 5], H[NMax + 5], N, M, p, x, y;
int Root(int Nod)
{
while(TT[Nod]) Nod = TT[Nod];
return Nod;
}
void Unite(int N1, int N2)
{
int R1 = Root(N1), R2 = Root(N2);
if(H[R1] < H[R2]) ///Unesc de R2
{
TT[R1] = R2;
}
else if(H[R1] == H[R2])///Unesc de R2
{
TT[R1] = R2, H[R2]++;
}
else ///Unesc de R1
TT[R2] = R1;
}
int main()
{
fin >> N >> M;
for(int i = 1; i <= N; i++) H[i] = 1;
while(M--)
{
fin >> p >> x >> y;
if(p == 1)
Unite(x, y);
else
fout << ((Root(x) == Root(y)) ? "DA" : "NU") << '\n';
}
fin.close();
fout.close();
return 0;
}