Pagini recente » Cod sursa (job #2893594) | Cod sursa (job #1220017) | Cod sursa (job #684616) | Cod sursa (job #2525043) | Cod sursa (job #2372911)
#include <bits/stdc++.h>
#define DAU std::ios::sync_with_stdio(false); fin.tie(0); fout.tie(0);
#define PLEC fin.close(); fout.close(); return 0;
/// DAU si PLEC !!!
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int N = 100002;
int n, Q, op, x, y, rep[N], l[N], rx, ry;
inline int Find(int x)
{
while (rep[x] != x)
x = rep[x];
return x;
}
inline void Union(int x, int y)
{
rx = Find(x);
ry = Find(y);
if (rx != ry)
{
if (l[rx] > l[ry])
rep[ry] = rx, l[rx] += l[ry];
else rep[rx] = ry, l[ry] += l[rx];
}
}
inline void Verif(int x, int y)
{
rx = Find(x);
ry = Find(y);
if (rx == ry)
fout << "DA\n";
else fout << "NU\n";
}
int main()
{
DAU
fin >> n >> Q;
for (int i = 1; i <= n; ++i)
rep[i] = i;
for (int q = 1; q <= Q; ++q)
{
fin >> op >> x >> y;
if (op == 1)
Union(x, y);
else Verif(x, y);
}
PLEC
}