Pagini recente » Cod sursa (job #125417) | Cod sursa (job #2006354) | Cod sursa (job #1079891) | Cod sursa (job #1607524) | Cod sursa (job #1210006)
#include<fstream>
using namespace std;
#define MAXN 100005
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int parent[MAXN],N,M,size[MAXN];
int Find(int x)
{
while(parent[x]>0)
x=parent[x];
return x;
}
void Union(int x, int y)
{
int rx=Find(x),ry=Find(y);
if(rx!=ry){
if(size[rx]>size[ry]){
parent[ry]=rx;
size[rx]=size[rx]+size[ry];
}
else {
parent[rx]=ry;
size[ry]=size[ry]+size[rx];
}
}
}//end Union
int main() {
int i,x,y,q;
for(i=1;i<=N;i++)
size[i]=1;
cin>>N>>M;
for(i=1;i<=M;i++){
cin>>q>>x>>y;
if(q==1) Union(x,y);
else if(Find(x)==Find(y)) cout<<"DA"<<"\n";
else cout<<"NU"<<"\n";
}//end for
return 0;
}