Pagini recente » Cod sursa (job #2690127) | Cod sursa (job #487018) | Cod sursa (job #1927799) | Cod sursa (job #1270340) | Cod sursa (job #2924285)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
const int MAXN=100010;
int n,m;
int tati[MAXN],nrnod[MAXN];
int main()
{
fin >>n>>m;
for (int i=1;i<=n;++i){
tati[i]=i;
nrnod[i]=1;
}
for (int i=1;i<=m;++i){
int t,x,y;
fin >>t>>x>>y;
if (t==1){
int rx=x,ry=y;
while (tati[rx]!=rx)
rx=tati[rx];
while (tati[ry]!=ry)
ry=tati[ry];
int rx2=x,ry2=y;
while (tati[rx2]!=rx2){
rx2=tati[rx2];
tati[rx2]=rx;
}
while (tati[ry2]!=ry2){
ry2=tati[ry2];
tati[ry2]=ry;
}
if (nrnod[rx]>=nrnod[ry])
tati[ry]=rx;
else
tati[rx]=ry;
}
else{
int rx=x,ry=y;
while (tati[rx]!=rx)
rx=tati[rx];
while (tati[ry]!=ry)
ry=tati[ry];
if (rx==ry)
fout <<"DA"<<'\n';
else
fout <<"NU"<<'\n';
int rx2=x,ry2=y;
while (tati[rx2]!=rx2){
rx2=tati[rx2];
tati[rx2]=rx;
}
while (tati[ry2]!=ry2){
ry2=tati[ry2];
tati[ry2]=ry;
}
}
}
fin.close ();
fout.close ();
return 0;
}