Pagini recente » Cod sursa (job #1152985) | Cod sursa (job #2353657) | Cod sursa (job #736161) | Cod sursa (job #2827986) | Cod sursa (job #2405425)
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
#define dim 8192
#define nmax 100001
int pz;
char ax[dim];
int n, m, x, y, r, t[nmax];
void cit(int &x) {
x = 0;
while (ax[pz] < '0' || ax[pz] > '9'){
if (++pz == dim) f.read(ax,dim), pz = 0;
}
while (ax[pz] >= '0' && ax[pz] <= '9') {
x = x*10 + ax[pz] - '0';
if (++pz == dim) f.read(ax,dim), pz = 0;
}
}
int find(int i) {
if (t[i] != i) t[i] = find(t[i]);
return t[i];
}
void uneste(int i, int j) {
i = find(i);
j = find(j);
if (i == j) return;
t[i] = j;
}
int main()
{
cit(n), cit(m);
for (int i = 1; i <= n; ++i) t[i] = i;
for (int i = 1; i <= m; ++i) {
cit(r), cit(x), cit(y);
if (r - 1) {
if (find(x) - find(y)) g << "NU\n";
else g << "DA\n";
}
else {
uneste(x,y);
}
}
return 0;
}