Pagini recente » Cod sursa (job #1698292) | Cod sursa (job #2374165) | Cod sursa (job #2665603) | Cod sursa (job #1692465) | Cod sursa (job #1096962)
#include<fstream>
using namespace std;
int n,m,tata[100010],h[100010];
void uneste(int nod1,int nod2) {
if(h[nod1]==h[nod2]){
h[nod1]++;
tata[nod2]=nod1;
}
if(h[nod1]>h[nod2])
tata[nod2]=nod1;
if(h[nod2]>h[nod1])
tata[nod1]=nod2;
}
int dfs(int nod) {
if(tata[nod]==nod)
return nod;
return dfs(tata[nod]);
}
int main() {
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int i,x,y,task;
in>>n>>m;
for(i=1;i<=n;i++) {
tata[i]=i;
h[i]=1;
}
for(i=1;i<=m;i++) {
in>>task>>x>>y;
if(task==1)
uneste(dfs(x),dfs(y));
if(task==2){
if(dfs(y)==dfs(x))
out<<"DA"<<'\n';
else
out<<"NU"<<'\n';
}
}
in.close();
out.close();
return 0;
}