RT。
代码 1:
void dfs (int u, int fa) {
for (int i = h[u]; i != 0; i = a[i].nxt) {
int v = a[i].to;
if (v == fa) {
continue;
}
dfs (v, u);
if (b[v] != 0) {
cnt++;
}
}
}
代码 2:
void dfs (int u, int fa) {
for (int i = h[u]; i != 0; i = a[i].nxt) {
int v = a[i].to;
if (v == fa) {
continue;
}
if (b[v] > 0) {
dfs (v, u);
cnt++;
}
}
for (int i = h[u]; i != 0; i = a[i].nxt) {
int v = a[i].to;
if (v == fa) {
continue;
}
if (b[v] < 0) {
dfs (v, u);
cnt++;
}
}
}
(其中 a[],h[] 是链式前向星的因素,遍历一棵树)
运行得到的 cnt 值并不相同。试问原因。