Pagini recente » Cod sursa (job #32601) | Cod sursa (job #916900) | Cod sursa (job #280579) | Cod sursa (job #2587412) | Cod sursa (job #2447522)
#include <bits/stdc++.h>
using namespace std;
ifstream f ( "disjoint.in" ); ofstream g ( "disjoint.out" );
int n,m,tata[200005],rang[200005];
int reprezentant(int x)
{ if(tata[x]==x) return x;
int a=reprezentant(tata[x]);
tata[x]=a;
return a;
}
void reuniune(int a,int b)
{ int repa=reprezentant(a),repb=reprezentant(b);
if(rang[repa]>rang[repb]) tata[repb]=repa;
else tata[repa]=repb;
}
int main()
{ f>>n>>m;
for(int i=1;i<=n;i++)
{ tata[i]=i;
rang[i]=1;
}
while(m--)
{ int tip,x,y;
f>>tip>>x>>y;
if(tip==1) reuniune(x,y);
else
{ if(reprezentant(x)==reprezentant(y)) g<< "DA\n";
else g<< "NU\n";
}
}
return 0;
}