Pagini recente » Cod sursa (job #410110) | Cod sursa (job #440013) | Cod sursa (job #889340) | Cod sursa (job #127122) | Cod sursa (job #2861368)
#include <fstream>
using namespace std;
const int N = 1e5+1;
int r[N];
int nr[N];
ifstream in ("disjoint.in");
ofstream out ("disjoint.out");
int root(int x)
{
if(r[x]==x)
{
return x;
}
r[x]=root(r[x]);
return r[x];
}
void uni(int x, int y)
{
int rx=root(x);
int ry=root(y);
if(nr[rx]<nr[ry])
{
nr[ry]+=nr[rx];
r[rx]=ry;
}
else
{
nr[rx]+=nr[rx];
r[ry]=rx;
}
}
bool verif(int x, int y)
{
return (root(x)==root(y));
}
int main()
{
int n,m;
in >> n >> m;
for(int i=1;i<=n;i++)
{
r[i]=i;
nr[i]=1;
}
while(m--)
{
int q, x , y;
in >> q >> x >> y;
if(q==2)
{
if(verif(x,y))
{
out << "DA" << "\n";
}
else
{
out << "NU" << "\n";
}
}
else
{
uni(x,y);
}
}
return 0;
}