Pagini recente » Cod sursa (job #1770878) | Cod sursa (job #600217) | Cod sursa (job #2299598) | Cod sursa (job #531125) | Cod sursa (job #2781713)
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int t[NMAX], lg[NMAX];
void uneste(int x, int y);
int radacina(int x);
int main()
{
int n, m, i, a, x, y;
fin >> n >> m;
for(i = 1; i <= n; i++) t[i] = i, lg[i] = 1;
while(m--)
{
fin >> a >> x >> y;
if(a == 1) uneste(x, y);
else
{
if(radacina(x) == radacina(y)) fout << "DA" << '\n';
else fout << "NU" << '\n';
}
}
return 0;
}
void uneste(int x, int y)
{
int a = radacina(x), b = radacina(y);
if(lg[a] < lg[b]) lg[b] += lg[a], t[a] = b;
else lg[a] += lg[b], t[b] = a;
}
int radacina(int x)
{
if(t[x] != x) t[x] = radacina(t[x]);
return t[x];
}