Pagini recente » Cod sursa (job #478132) | Cod sursa (job #871462) | Cod sursa (job #3274977) | Cod sursa (job #2304991) | Cod sursa (job #883675)
Cod sursa(job #883675)
#include <fstream>
using namespace std;
int v[100001],r[100001];
int main() {
int i,n,m,op,x,y,dx,dy,q;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
in>>n>>m;
for (i=1; i<=n; i++) {
v[i]=i;
r[i]=1;
}
for (i=1; i<=m; i++) {
in>>op>>x>>y;
dx=x;
dy=y;
if (op==1) {
while (v[x]!=x)
x=v[x];
while (v[dx]!=dx) {
q=v[dx];
v[dx]=x;
dx=q;
}
while (v[y]!=y)
y=v[y];
while (v[dy]!=dy) {
q=v[dy];
v[dy]=y;
dy=q;
}
if (r[x]<r[y])
v[x]=y;
else
v[y]=x;
if (r[x]==r[y])
r[y]++;
}
else if (op==2) {
while (v[x]!=x)
x=v[x];
while (v[dx]!=dx) {
q=v[dx];
v[dx]=x;
dx=q;
}
while (v[y]!=y)
y=v[y];
while (v[dy]!=dy) {
q=v[dy];
v[dy]=y;
dy=q;
}
if (x==y)
out<<"DA"<<'\n';
else
out<<"NU"<<'\n';
}
}
out.close();
return 0;
}