Pagini recente » Cod sursa (job #459199) | Cod sursa (job #515800) | Cod sursa (job #2621517) | Cod sursa (job #3003004) | Cod sursa (job #2075185)
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out") ;
int c,i,n,op,h[100005],t[100005];
int m,x,y;
int caut(int x){
int r=x;
while(t[r]) r=t[r];
int y=x;
while(y!=r){
int t1=t[y];
t[y]=r;
y=t1;
}
return r;
}
void leg(int x,int y){
int c;
int r1=caut(x),r2=caut(y);
if(h[r1]>h[r2])t[r1]=y,c=y;
else t[r2]=x,c=x;
if(h[r1]==h[r2])h[c]++;
}
int main()
{f>>n>>m;
for(i=1;i<=n;i++) h[i]=1;
for(i=1;i<=m;i++){
f>>c>>x>>y;
if(c==1) leg(x,y);
else if(caut(x)==caut(y)) g<<"DA\n";
else g<<"NU\n";
}
return 0;
}