Pagini recente » Cod sursa (job #705787) | Cod sursa (job #465020) | Cod sursa (job #2320119) | Cod sursa (job #303807) | Cod sursa (job #2853480)
#include<fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,x,y,tip,i,sef[100002],x1,y1,nrc[100002];
int main ()
{
fin>>n>>m;
for(i=1;i<=n;i++){
sef[i]=i;
nrc[i]=1;
}
for(i=1;i<=m;i++){
fin>>tip>>x>>y;
x1=x;
while(x1!=sef[x1]){
x1=sef[x1];
}
///x1 este seful grupului din care x face parte
y1=y;
while(y1!=sef[y1]){
y1=sef[y1];
}
///y1 este seful grupului din care y face parte
if(tip==1){
///se face unificare
if(nrc[x1]<nrc[y1]){
nrc[y1]+=nrc[x1];
sef[x1]=y1;
}
else{
nrc[x1]+=nrc[y1];
sef[y1]=x1;
}
}
else{
if(x1==y1) fout<<"DA\n";
else fout<<"NU\n";
}
}
fin.close();
fout.close();
return 0;
}