法一:
void link(int x, int y) {
if (getRoot(x) != getRoot(y)) {
setRoot(x), setRoot(y);
pushdown(x), a[x].l = y, a[y].p = x, pushup(x);
}
}
法二:
if (getRoot(x) != getRoot(y)) {
setRoot(x), access(y);
pushdown(x), a[x].l = y, a[y].p = x, pushup(x);
}
在大多数题目里第一种写法是对的,但是比如在航线规划这题里面用法一就不对。这是为什么?