Pagini recente » Cod sursa (job #3170455) | Cod sursa (job #2749770) | Cod sursa (job #1789561) | Cod sursa (job #1374529) | Cod sursa (job #2368058)
#include<fstream>
using namespace std;
ifstream f ("disjoint.in");
ofstream g ("disjoint.out");
int x,T,m,y,n,t[100020],p[100020];
int root(int x){
int y=x,aux;
while(t[x]!=x) x=t[x];
while(y!=t[y]){
aux=y;
y=t[y];
t[aux]=x;
}
return x;
}
void unificare(int x,int y){
if(p[x]>p[y]){
t[y]=x;
}
else if(p[y]>p[x]){
t[x]=y;
}
else {
t[y]=x;
++p[y];
}
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;++i) t[i]=i,p[i]=1;
for(int i=1;i<=m;++i){
f>>T>>x>>y;
if(T==1){
int rx=root(x);
int ry=root(y);
unificare(rx,ry);
}
else{
int rx=root(x);
int ry=root(y);
if(rx==ry) g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
}
}