关于第二篇题解的dfs,如果将原题解中的语块
for (int i=head[u]; i!=-1; i=e[i].nex)
{
int v=e[i].to;
if (v==f) continue;
dfs(v,u);
if (d[u]<d[v]+w[v])
{
d[u] = d[v]+w[v];
heavy[u] = v;
}
}
for (int i=head[u]; i!=-1; i=e[i].nex)
{
int v=e[i].to;
if (v==f) continue;
cnts++; son[cnts].e = d[v]+w[v]; son[cnts].v = v;
}
把下面for的内容放入上一个for中,就会WA掉
for (int i=head[u]; i!=-1; i=e[i].nex)
{
int v=e[i].to;
if (v==f) continue;
dfs(v,u);
if (d[u]<d[v]+w[v])
{
d[u] = d[v]+w[v];
heavy[u] = v;
}
cnts++; son[cnts].e = d[v]+w[v]; son[cnts].v = v;
}
这是为什么呢,感觉没有多大的差异,自己也想不明白