Pagini recente » Cod sursa (job #1556337) | Cod sursa (job #1639895) | Cod sursa (job #664706) | Cod sursa (job #3293383) | Cod sursa (job #1644352)
# include <fstream>
# include <vector>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int MAX = 100005;
vector<int> t(MAX), r(MAX);
int n, m;
void connect(int x, int y) {
if (r[x] > r[y])
t[y] = x;
else t[x] = y;
if (r[x] == r[y])
++r[y];
}
bool sameForest(int x, int y) {
int r;
for (r = x; r; r = t[r])
if (r == y)
return 1;
for (r = y; r; r = t[r])
if (r == x)
return 1;
return 0;
}
int main() {
int tmp, x, y, i;
fin >> n >> m;
for (i=1; i<=n; ++i)
t[i] = 0, r[i] = 1;
for (i=1; i<=m; ++i) {
fin >> tmp >> x >> y;
if (tmp == 1)
connect(x, y);
else {
if (sameForest(x, y))
fout << "DA\n";
else
fout << "NU\n";
}
}
return 0;
}