Pagini recente » Cod sursa (job #2488363) | Cod sursa (job #2072036) | Cod sursa (job #96050) | Cod sursa (job #3239289) | Cod sursa (job #819192)
Cod sursa(job #819192)
#include <fstream>
#define NMAX 100011
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int N, M;
int R[NMAX], T[NMAX];
int search(int val) {
int nod, aux;
for(nod = val; nod != T[nod]; nod = T[nod]);
for(; val != T[val]; ) {
aux = T[val];
T[val] = nod;
val = aux;
}
return nod;
}
void unite(int a, int b) {
if(R[a] < R[b])
T[a] = b;
else
{
if(R[a] == R[b]) ++ R[b];
T[b] = a;
}
}
void read() {
int i, cod, a, b;
fin >> N >> M;
for(i = 1; i <= N; ++ i) {
R[i] = 0;
T[i] = i;
}
for(i = 1; i <= M; ++ i) {
fin >> cod >> a >> b;
if(cod == 2) {
if(search(a) == search(b))
fout << "DA\n";
else fout << "NU\n";
}
else
unite(a, b);
}
}
int main() {
read();
return 0;
}