Pagini recente » Cod sursa (job #1571016) | Cod sursa (job #78948) | Cod sursa (job #9030) | Cod sursa (job #2906020) | Cod sursa (job #632988)
Cod sursa(job #632988)
//#include<cstdio>
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
int n, m;
vector <int>L[100001];
int multime[100001]; // multime[i] = indicele multimii in care se afla elementul i
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
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
if(L[i].size() < L[j].size()) swap(i, j);
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]) fout<<"DA\n"; //printf("DA\n");
else fout<<"NU\n"; //printf("NU\n");
}
int main() {
int i, x, y, cod;
fin>>n>>m;
//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++) {
fin>>cod>>x>>y;
//scanf("%d %d %d", &cod, &x, &y);
if(cod == 1) Reuneste(x, y);
else Afiseaza(x, y);
}
return 0;
}