Pagini recente » Cod sursa (job #2702710) | Cod sursa (job #3235453) | Cod sursa (job #644264) | Cod sursa (job #365902) | Cod sursa (job #3194167)
#include <bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
const int NMAX=100001;
vector <int> G[NMAX];
int n,m,viz[NMAX],T[NMAX],rang[NMAX];
void read(){
f>>n>>m;
}
int Find(int nod){
if(nod!=T[nod]){
int r=Find(T[nod]);
T[nod]=r;
return r;
}
return nod;
}
void Union(int x,int y){
if(rang[x]<rang[y]){
T[x]=y;
} else if(rang[x]>rang[y]){
T[y]=x;
} else{
T[x]=y;
rang[y]++;
}
}
int main()
{
read();
for(int i=1;i<=n;i++){
T[i]=i;
}
for(int i=1;i<=m;i++){
int cod,x,y;
f>>cod>>x>>y;
int rx=Find(x);
int ry=Find(y);
if(cod==1){
Union(rx,ry);
} else if(rx==ry){
g<<"DA"<<'\n';
} else g<<"NU"<<'\n';
}
return 0;
}