请求撤下两篇题解。
第一篇题解代码中忘记给方点权值赋 1 了。
而且经过我一天的理解,我认为他的代码实现和他的思路不一致。
所以麻烦先撤下。
对于另一篇题解。
这篇题解的代码里也犯了一个低级错误:
if(x>n) for(auto dq:e[x]) if(dq!=fa) if(cnt-(!dp[dq])==0&&in[x][dq]==e[x].size()-1) dp1[dq]=dp1[x];
else for(auto dq:e[x]) if(dq!=fa) if(cnt-(!dp[dq])==0) dp1[dq]=dp1[x];
显然的是下面的 else 会和上面的 for 循环里的 if 匹配上,不符合他的思路。
我们加上大括号上后就发现本题解无法通过。
所以请求撤下。
同时我想问下这题的思路到底是什么
我按照第一篇题解思路里写的东西实现了,发现这个条件貌似有问题:
这个条件从思考的角度应该是充要的,但是实测却不是。
而第一篇题解他自己的代码实现是一个非常奇怪的东西,我无法理解:
if(!g[x]) {for(auto y:v[x]) if(y!=fa) g[y]=0,dfs2(y,x); return;}
if(x<=n)
{
int pre=1; for(auto y:v[x]) if(y!=fa) g[y]&=pre,pre&=f[y];
reverse(v[x].begin(),v[x].end()),pre=1;
for(auto y:v[x]) if(y!=fa) g[y]&=pre,pre&=f[y];
reverse(v[x].begin(),v[x].end());
for(auto y:v[x]) if(y!=fa) dfs2(y,x);
return;
}
这一段归纳起来到底是在做什么,有无老哥指点。