Pagini recente » Cod sursa (job #1001638) | Cod sursa (job #226183) | Cod sursa (job #3246747) | Cod sursa (job #964244) | Cod sursa (job #2837334)
#include <fstream>
#define NMAX 100004
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int n, m, tata[NMAX], h[NMAX];
void citire();
int Find(int x);
void Union(int i, int j);
int main()
{
citire();
return 0;
}
void citire()
{
int cod, x, y;
fin >> n >> m;
for (int i = 1; i <= m; i++)
{
fin >> cod >> x >> y;
if (cod == 1)
Union(x, y);
else
{
int m1 = Find(x);
int m2 = Find(y);
if (m1 == m2)
fout << "DA\n";
else
fout << "NU\n";
}
}
}
int Find(int x)
{
int r;
r = x;
while (tata[r])
r = tata[r];
while (tata[x])
{
tata[x] = r;
x = tata[x];
}
return r;
}
void Union(int i, int j)
{
if (h[i] < h[j])
tata[i] = j;
else if (h[i] > h[j])
tata[j] = i;
else
{
tata[i] = j;
h[j]++;
}
}