Pagini recente » Cod sursa (job #2006494) | Cod sursa (job #3288764) | Cod sursa (job #1305024) | Cod sursa (job #1650990) | Cod sursa (job #2458648)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int MaxN = 100000 + 5;
int t[MaxN];
int n, m;
int x, y, q;
int Find(int x);
void Union(int x, int y);
void SetUp();
int main()
{
fin >> n >> m;
SetUp();
for (int i = 1; i <= m; ++i)
{
fin >> q >> x >> y;
if (q == 1)
Union(x, y);
else
fout << (Find(x) == Find(y) ? "DA\n" : "NU\n");
}
fin.close();
fout.close();
return 0;
}
void SetUp()
{
for (int i = 1; i <= n; ++i)
t[i] = i;
}
int Find(int x)
{
if (x == t[x])
return x;
return t[x] = Find(t[x]);
}
void Union(int x, int y)
{
int r1 = Find(x);
int r2 = Find(y);
if (r1 != r2)
t[r1] = r2;
}