2 条题解
-
5
对于每个点,求一个 指子树大小。
对于一条边 , 分别指边链接得两个点,和这条边的脆弱值,其中的 为 的父亲。
这条边把树分成两部分,一边有 个节点,另一边就有 个节点,损伤值 = 。
时间复杂度 ,空间 。
参考代码(仅有关键部分):
void dfs(int u,int fa){ siz[u]=1; for(auto son:g[u]){ int v=son.v; if(v==fa) continue; dfs(v,u); siz[u]+=siz[v]; } } void get(int u,int fa){ for(auto son:g[u]){ int v=son.v; ll w=son.w; if(v==fa) continue; ans+=w*abs(siz[v]-(n-siz[v])); get(v,u); } }
信息
- ID
- 2739
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- (无)
- 递交数
- 27
- 已通过
- 12
- 上传者