Pagini recente » Cod sursa (job #683642) | Cod sursa (job #1242618) | Cod sursa (job #2352517) | Cod sursa (job #1112754) | Cod sursa (job #842365)
Cod sursa(job #842365)
#include <fstream>
using namespace std;
const int N = 100005;
const char ans[2][10] = {"NU\n", "DA\n"};
struct Pmd{
int T[N], D[N];
void init(int size){
for (int i = 1 ; i <= size ; i++){
T[i] = i;
D[i] = 1;
}
}
int tata(int x){
if (x == T[x])
return x;
return T[x] = tata(T[x]);
}
void merge(int x, int y){
x = tata(x);
y = tata(y);
if (x == y)
return;
if (D[x] < D[y]){
T[x] = y;
D[y] += D[x];
} else {
T[y] = x;
D[x] += D[y];
}
}
};
Pmd P;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int main(){
int n, m, t, x, y;
in >> n >> m;
P.init(n);
while (m--){
in >> t >> x >> y;
x = P.tata(x);
y = P.tata(y);
if (t == 1)
P.merge(x, y);
else
out << ans[x == y];
}
return 0;
}