Pagini recente » Cod sursa (job #311910) | Cod sursa (job #977753) | Cod sursa (job #1330926) | Cod sursa (job #272557) | Cod sursa (job #3141131)
#include <bits/stdc++.h>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int tata[100001], sz[100001];
int capetenie(int nod)
{
if(tata[nod] == nod)
return nod;
return capetenie(tata[nod]);
}
int cnt;
void join(int a, int b)
{
int ra = capetenie(a), rb = capetenie(b);
if(ra == rb)
return;
cnt--;
if(sz[rb] > sz[ra])
swap(ra, rb);
tata[rb] = ra;
sz[ra] += sz[rb];
}
int main()
{
int n, m, t, a, b;
in >> n >> m;
cnt = n;
for(int i = 1; i <= n; i++)
{
tata[i] = i;
sz[i] = 1;
}
for(int i = 1; i <= m; i++)
{
in >> t >> a >> b;
if(t == 1)
join(a, b);
else
out << (capetenie(a) == capetenie(b) ? "DA\n" : "NU\n");
}
return 0;
}