Pagini recente » Cod sursa (job #1722441) | Cod sursa (job #804860) | Cod sursa (job #1741151) | Cod sursa (job #1752133) | Cod sursa (job #1199767)
#include <fstream>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
void uneste(long x, long y,long RG[],long Rad[])
{
if (RG[x]>RG[y]) Rad[y]=x;
else Rad[x]=y;
if (RG[x]==RG[y]) ++RG[x];
}
long cauta_rad(long x,long Rad[])
{
long nod, aux;
for (nod = x; Rad[nod] != nod; nod = Rad[nod]);
while (Rad[x]!= x){
aux = Rad[x];
Rad[x] = nod;
x = aux;
}
return nod;
}
long m,n,i,j,x,y,cod;
long Rad[100013],RG[100013];
int main(){
cin>>m>>n;
for (i=1;i<=n;++i) {
Rad[i]=i;
RG[i]=1;
}
for (i=1;i<=n;++i){
cin>>cod>>x>>y;
if (cod==1) uneste(cauta_rad(x,Rad),cauta_rad(y,Rad),RG,Rad);
if (cod==2)
if (cauta_rad(x,Rad) == cauta_rad(y,Rad)) cout<<"DA\n";
else cout<<"NU\n";
}
return 0;
}