Pagini recente » Cod sursa (job #2372311) | Cod sursa (job #3282903) | Cod sursa (job #1425666) | Cod sursa (job #3274236) | Cod sursa (job #300344)
Cod sursa(job #300344)
#include <stdio.h>
#include <algorithm>
#include <set>
using namespace std;
#define nm 100010
struct ltstr
{
bool operator()(const int s1, const int s2) const
{
return s1 < s2;
}
};
set <int, ltstr> S[nm], T;
int i, n, m, j, x, t, y, X, Y;
void read()
{
scanf("%d %d ", &n, &m);
for (i=1; i<=n; ++i)
{
S[i].insert(i);
}
}
void solve()
{
for (i=1; i<=m; ++i)
{
scanf("%d %d %d ", &t, &x, &y);
if (t == 1)
{
for (j=1; j<=n; ++j)
{
if (S[j].find(x) != S[j].end())
{
X = j;
}
if (S[j].find(y) != S[j].end())
Y = j;
}
T.clear();
set_union(S[X].begin(), S[X].end(), S[Y].begin(), S[Y].end(), inserter(T, T.begin()) );
S[X].clear();
S[Y].clear();
copy(T.begin(), T.end(), inserter(S[X], S[X].begin()) );
}
else
{
for (j=1; j<=n; ++j)
{
if (S[j].find(x) != S[j].end())
{
X = j;
}
if (S[j].find(y) != S[j].end())
Y = j;
}
if (X == Y)
printf("DA\n");
else
printf("NU\n");
}
}
}
void write()
{
}
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out","w",stdout);
read();
solve();
write();
return 0;
}