Pagini recente » Cod sursa (job #485906) | Cod sursa (job #2792818) | Cod sursa (job #1712700) | Cod sursa (job #2932760) | Cod sursa (job #1922542)
#include <fstream>
#define NMAX 100010
using namespace std;
int nivele[NMAX],t[NMAX],n,m,i,op,x,y;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int gasesc(int a){
if(a==t[a])
return a;
t[a]=gasesc(t[a]);
return t[a];
}
void unesc(int a,int b){
if(nivele[a]<nivele[b])
t[a]=b;
else{
if(nivele[a]>nivele[b])
t[b]=a;
else{
t[a]=b;
++nivele[b];
}
}
}
int main()
{
f>>n>>m;
for(i=1;i<=n;i++){
t[i]=i;
nivele[i]=1;
}
for(i=1;i<=m;i++){
f>>op>>x>>y;
if(op==1){
int tx,ty;
tx=gasesc(x),ty=gasesc(y);
unesc(tx,ty);
}else{
if(gasesc(x)==gasesc(y))
g<<"DA"<<'\n';
else
g<<"NU"<<'\n';
}
}
return 0;
}