Pagini recente » Cod sursa (job #2396099) | Cod sursa (job #2193333) | Cod sursa (job #988117) | Cod sursa (job #37851) | Cod sursa (job #2560092)
#include <bits/stdc++.h>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
const int dim = 100001;
struct nod
{
int r;
nod* p;
};
int n, m;
nod* mu[dim];
nod* multime(nod* x)
{
if(x != x->p)
x->p = multime(x->p);
return x->p;
}
void unite(nod* x, nod* y)
{
nod* a = multime(x);
nod* b = multime(y);
if(a->r < b->r)
a->p = b;
else if(b->r < a->r)
b->p = a;
else
{
a->p = b;
(b->r)++;
}
}
void solve()
{
int c, x, y;
for(int i = 1;i <= n;i++)
{
mu[i] = new nod;
mu[i]->r = 0;
mu[i]->p = mu[i];
}
for(int i = 1;i <= m;i++)
{
in>>c>>x>>y;
if(c == 1)
unite(mu[x], mu[y]);
else
{
if(multime(mu[x]) == multime(mu[y]))
out<<"DA"<<'\n';
else
out<<"NU"<<'\n';
}
}
}
int main()
{
in>>n>>m;
solve();
return 0;
}