Pagini recente » Cod sursa (job #1820360) | Cod sursa (job #998130) | Cod sursa (job #2541808) | Cod sursa (job #2527994) | Cod sursa (job #1860137)
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n, m, x, y, q, i, j, tt[100005], gr[100005];
int update(int x) {
int r=x, y;
while (tt[r] != r)
r = tt[r];
while (tt[x]!=x)
y = tt[x], tt[x]=r, x=y;
return r;
}
void join(int x, int y) {
if (gr[x] > gr[y])
tt[y]=x;
else tt[x]=y;
if (gr[x]==gr[y]) gr[y]++;
}
int main() {
f >> n >> m;
for (i = 1; i <= n; i++)
tt[i] = i, gr[i] = 1;
while (m--) {
f >> q >> x >> y;
x = update(x), y = update(y);
if (q == 2)
g << (x!=y?"NU\n":"DA\n");
else join(x,y);
}
}