Pagini recente » Cod sursa (job #881653) | Cod sursa (job #2118328) | Cod sursa (job #1496770) | Cod sursa (job #2535561) | Cod sursa (job #632984)
Cod sursa(job #632984)
#include<cstdio>
#include<vector>
using namespace std;
int n, m;
vector <int>L[100001];
int multime[100001]; // multime[i] = indicele multimii in care se afla elementul i
void Reuneste(const int &x, const int &y) {
int k;
int i = multime[x]; // indicele multimii lui x
int j = multime[y]; // indicele multimii lui y
for(k = 0; k < (int)L[j].size(); k++) {
L[i].push_back(L[j][k]);
multime[L[j][k]] = i;
}
}
void Afiseaza(const int &x, const int &y) {
if(multime[x] == multime[y]) printf("DA\n");
else printf("NU\n");
}
int main() {
int i, x, y, cod;
freopen("disjoint.in", "r", stdin), freopen("disjoint.out", "w", stdout);
scanf("%d %d", &n, &m);
for(i = 1; i <= n; i++) {
L[i].push_back(i);
multime[i] = i;
}
for(i = 1; i <= m; i++) {
scanf("%d %d %d", &cod, &x, &y);
if(cod == 1) Reuneste(x, y);
else Afiseaza(x, y);
}
return 0;
}