标签:箱子 Cube Stacking 查集 sums 祖先 POJ 一列 节点
一、题目大意
有\(n\)个箱子,初始时每个箱子单独为一列;
接下来有\(p\)行输入,\(M\), \(x\), \(y\) 或者 \(C\), \(x\);
对于\(M\),\(x\),\(y\):表示将\(x\)箱子所在的一列箱子搬到\(y\)所在的一列箱子上;
对于\(C\),\(x\):表示查询箱子\(x\)下面有多少个箱子;
二、解析
本题在并查集的基础上,要求输出当前节点的子节点数量。
其实可以转化为带权并查集的问题,求出当前节点的祖先的总子孙数量,减去当前节点到祖先的距离再减一即可。
\(Up[x]\)代表\(x\)到自己的祖先的距离(也就是上面有多少节点)
\(sums[x]\)代表以\(x\)为根节点的子孙数量(只对根节点有效,因为在合并时,非根节点的\(sums\)值将不再被更新)
\(s[x]\)代表\(x\)的祖先
三、实现代码
标签:箱子,Cube,Stacking,查集,sums,祖先,POJ,一列,节点 来源: https://www.cnblogs.com/littlehb/p/16128501.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。