Pagini recente » Cod sursa (job #723937) | Cod sursa (job #2836723) | Cod sursa (job #1850780) | Cod sursa (job #1468460) | Cod sursa (job #573680)
Cod sursa(job #573680)
#include <fstream>
using namespace std;
const int N=100005;
const char rasp[][6]={"NU\n","DA\n"};
int v[N],size[N];
ifstream in("disjoint.in");
ofstream out("disjoint.out");
inline void varf(int x)
{
if (v[x]==x)
return;
varf(v[x]);
v[x]=v[v[x]];
}
int main()
{
int x,y,n,m;
in>>n>>m;
for (int i=1;i<=n;i++)
{
size[i]=1;
v[i]=i;
}
while (m--)
{
in>>x;
if (x==1)
{
in>>x>>y;
varf(x);varf(y);
if (v[x]==v[y])
continue;
if (size[v[x]]>size[v[y]])
{
v[v[y]]=v[x];
size[v[x]]+=size[v[y]];
}
else
{
v[v[x]]=v[y];
size[v[y]]+=size[v[x]];
}
continue;
}
in>>x>>y;
varf(x);varf(y);
out<<rasp[v[x]==v[y]];
}
return 0;
}