AcWing 2069. 网络分析
2021-05-15 20:30
标签:ret width 路径压缩 ++ 合并 传递 const cst 并查集 原题链接 考察:并查集 思路: 很容易想到用并查集的根节点代表此集合的权值和.但是注意在结点合并的时候,会出现本不属于这里的权值.被路径压缩加到子结点上. 这里有两种处理方式: 一、建立虚点. 在x,y之上建立一个结点s,在路径压缩时就不会合并到y集合的权值k. 二、特殊处理x结点权值,在x权值和上减去y的权值和. 但是注意:直接这么路径压缩会使得1 2 4(样例)权值和计算错误.我们第一次合并可能会将r,p[x]的权值传递给x,但后面查询x的父节点后,又会将r的权值和再累加到x里.所以根据并查集压缩路径的结果,当枝条结点只有两个时,我们不进行权值合并,那么最后x的权值和结果是f[x]+f[p[x]].如果>2个,要符合前面的算式我们需要f[x] = f[x]+f[p[x]]因此路径压缩时可以累加父节点的权值. 最后还有一种特殊情况,就是p[x] = x.此时累加会使得结果重复. AcWing 2069. 网络分析 标签:ret width 路径压缩 ++ 合并 传递 const cst 并查集 原文地址:https://www.cnblogs.com/newblg/p/14665350.html 1 #include