这是 AC 代码片段:
inline void dfs2(int x, int fir) {
ans += f[x];
for (int i = head[x]; i; i = e[i].nxt) {
if (e[i].to != fir) {
if (f[e[i].to] * e[i].w != 1) f[e[i].to] = re(f[e[i].to], re(f[x], f[e[i].to] * e[i].w, 1) * e[i].w, 0);
dfs2(e[i].to, x);
}
}
}
这是 WA 的代码片段:
inline void dfs2(int x, int fir) {
ans += f[x];
for (int i = head[x]; i; i = e[i].nxt) {
if (e[i].to == fir) continue;
dfs2(e[i].to, x);
if ( f[e[i].to] * e[i].w == 1) continue;
f[e[i].to] = re(f[e[i].to], re(f[x], f[e[i].to] * e[i].w, 1) * e[i].w, 0);
}
}
请问有什么区别?