Pagini recente » Monitorul de evaluare | Diferente pentru runda/redsnow_2 intre reviziile 44 si 5 | Istoria paginii runda/mf_boss5 | Monitorul de evaluare | Cod sursa (job #996914)
Cod sursa(job #996914)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,v[100001],dim[100001];
void reunion (int x,int y)
{
int temp;
int xx=x,yy=y;
while (v[x]!=0) x=v[x];
while (v[y]!=0) y=v[y];
if (dim[x]<dim[y])
{
swap(x,y);
swap(xx,yy);
}
while (v[yy]!=0)
{
temp=v[yy];
v[yy]=x;
yy=temp;
}
dim[x]+=dim[yy];
v[yy]=x;
}
void discern (int x,int y)
{
while (v[x]!=0) x=v[x];
while (v[y]!=0) y=v[y];
if (x==y) fout<<"DA";
else fout<<"NU";
fout<<"\n";
}
int main()
{
int o,x,y,i;
fin>>n>>m;
for (int i=1; i<=n; i++) dim[i]=1;
for (i=1;i<=m;i++)
{
fin>>o>>x>>y;
if(o==1) reunion (x,y);
else discern (x,y);
}
}