Pagini recente » Cod sursa (job #648086) | Cod sursa (job #1946781) | Cod sursa (job #3287403) | Cod sursa (job #899592) | Cod sursa (job #2203710)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,o,x,y,i,j,m1,m2;
struct nod
{ int f,h;} arb[100015];
int rad(int nd)
{
if(arb[nd].f!=0)
{
int p=rad(arb[nd].f);
arb[nd].f=p;
return p;
}
else return nd;
}
int main() {
fin>>n>>m;
for(i=1;i<=n;i++)
{
arb[i].f=0;
arb[i].h=1;
}
for(i=1;i<=m;i++)
{
fin>>o>>x>>y;
if(o==1)
{
m1=rad(x);
m2=rad(y);
if(arb[m1].h<=arb[m2].h)
{
arb[m1].f=m2;
arb[m2].h=max(arb[m2].h,arb[m1].h+1);
}
else
{
arb[m2].f=m1;
arb[m1].h=max(arb[m1].h,arb[m2].h+1);
}
}
if(o==2)
{
if(rad(x)==rad(y)) cout<<"DA\n";
else cout<<"NU\n";
}
}
}