2014 ACM 并查集-p1.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ACM程序设计(二) 并查集Disjoint Sets 华南师大讲稿 问题引入 问题描述:如果已得到完整的家谱,判断两个人是否亲 戚应该是可行的,但如果两个人的最近公共祖先与他 们相隔好几代,使得家谱十分庞大,那么检验亲戚关系 实非人力所能及。 在这种情况下,最好的帮手就是计算机。为了将问题 简化,你将得到一些亲戚关系的信息,如Marry 和Tom 是亲戚,Tom和Ben 是亲戚,等等。从这些信息中,你可 以推出Marry 和Ben 是亲戚。请写一个程序,对于我们 的关于亲戚关系的提问,以最快的速度给出答案。 华南师大讲稿 输入输出格式: 输入由两部分组成。 第一部分以N,M 开始。N为问题涉及的人的个数(1  N  20000) 。这些人的编号为1,2,3,…, N 。下面有M 行(1  M  1 000 000),每行有两个数a , b ,表示已知a 和b 是 i i i i 亲戚。 第二部分以Q 开始。以下Q 行有Q 个询问(1  Q  1 000 000),每行为c , d ,表示询问c 和d 是否为亲戚。 i i i i 对于每个询问c , d ,输出一行:若c 和d 为亲戚, 则输出 i i i i “Yes”,否则输出 “No”。 华南师大讲稿 输入输出样例: relation.in : relation.out : 10 7 Yes 2 4 5 7 No 1 3 Yes 8 9 1 2 5 6 N=10 M=7 Q=3 2 3 3 3 4 7 10 华南师大讲稿 8 9 解法一:图模型—— 连通分量 思路分析: 将每个人抽象成为一个点,数据给出M个边的关系, 两 个人是亲戚的时候两点间有一条边。很自然的就得到 了一个N个顶点M 条边的图论模型, 注意到传递关系,在 图中一个连通块中的任意点之间都是亲戚。对于最后 的Q 个提问, 即判断所提问的两个顶点是否在同一个连 通块中。 用传统的思路,可以马上反应过来,对于输入的N 个点 M 条边,找出连通块,然后进行判断。但这种实现思路首 先必须保存M 条边,然后再进行普通的遍历算法,效率显 然不高。 华南师大讲稿 新问题 进一步考虑,如果把题目的要求改一改,对于边和提 问相间输入, 即把题目改成: 第一行是N,M 。N 为问题涉及的人的个数(1  N  20000) 。这些人的编号为1,2,3,…, N 。 下面有M 行(1  M  2 000 000),每行有三个数k ,a , i i b ,,a , b 表示两个元素,k 为0 或1,k 为1时表示这是一条 i i i i i 边的信息, 即a , b

文档评论(0)

weiwoduzun + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档