Вы находитесь на странице: 1из 1

#include <iostream>

using namespace std;


int n,t[32005],m,mx=999999;

int rad(int nod)


{
while(t[nod]>0)
nod=t[nod];
return nod;
}

int main()
{
cin>>n>>m;
for(int i=1; i<=n; i++)
t[i]=-1;
for(;m;m--)
{
int x,y,z;
cin>>x;
if(x==1)
{
cin>>y>>z;
int xx=rad(y), yy=rad(z);

if(xx!=yy){

if(t[xx]>t[yy])
{
t[yy]+=t[xx] ;
t[xx]=yy;
} else
{
t[xx]+=t[yy] ;
t[yy]=xx;
}
mx=min(t[xx],mx);
mx=min(t[yy],mx);
}

}
else if(x==2)
{
cin>>y>>z;
int xx=rad(y), yy=rad(z);
if(xx==yy)
cout<<"DA"<<"\n";
else
cout<<"NU"<<"\n";
}
else
{
cout<<mx*(-1)<<"\n";
}
}
return 0;
}

Вам также может понравиться