Pagini recente » Cod sursa (job #1352537) | Cod sursa (job #2031898) | Cod sursa (job #1832051) | Cod sursa (job #38056) | Cod sursa (job #2953571)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int NMAX = 1e5+5;
int n, m, parent[NMAX], sets[NMAX];
inline int Find(int x)
{
if(x == parent[x])
return x;
return parent[x] = Find(parent[x]);
}
inline void Union(int x, int y)
{
if(x == y)
return;
if(sets[x] > sets[y])
swap(x, y);
parent[y] = x;
sets[x]+=sets[y];
}
inline void solve()
{
for(int i = 0; i < n; ++ i)
{
parent[i] = i;
sets[i] = 1;
}
while(m--)
{
int q, x, y;
fin >> q >> x >> y;
if(q == 1)
{
Union(x, y);
}
else
{
if(Find(x) == Find(y))
fout << "DA\n";
else
fout << "NU\n";
}
}
}
int main()
{
fin >> n >> m;
solve();
}