Pagini recente » Cod sursa (job #417749) | Cod sursa (job #1462299) | Cod sursa (job #3120495) | Cod sursa (job #3173863) | Cod sursa (job #2719429)
#include <bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n, m, r[100005], t[100005], x, y, z;
int find(int x)
{
if(t[x] == x)
return x;
return t[x] = find(t[x]);
}
void unite(int x, int y)
{
if(r[x] > r[y])
t[y] = x, r[x] += r[y];
else
t[x] = y, r[y] += r[x];
}
void Solve()
{
f>>n>>m;
for(int i = 1;i <= n;++i)
t[i] = i, r[i] = 1;
for(int i = 1;i <= m;++i)
{
f>>x>>y>>z;
if(x == 2)
g<<(find(y) == find(z) ? "DA" : "NU")<<'\n';
else if(find(y) != find(z))
unite(find(y), find(z));
}
}
int main()
{
Solve();
return 0;
}