该程序使用并查集的思想来统计互不相交的部落以及检查两个人是否属于同一个部落。

首先,定义了一个大小为10010的father数组,用来保存每个人的父节点。初始化时,将每个人的父节点设为自己。

然后,通过输入读取小圈子的信息。对于每个小圈子,先读取小圈子的人数k和第一个人的编号first。将第一个人的编号加入到total集合中,并将第一个人的编号与后面的人的编号通过uniont函数进行合并。若k为1,则说明该小圈子只有一个人,不需要进行合并操作。

接下来,遍历total集合,将每个人的父节点加入到cnt集合中,用于统计互不相交的部落数量。

然后,输出total集合的大小(即社区中的人数)和cnt集合的大小(即互不相交的部落数量)。

最后,通过输入读取查询次数m,然后依次读取每对被查询的人的编号a和b。通过find函数判断a和b是否属于同一个部落,若属于同一个部落,则输出"Y",否则输出"N"。

该程序没有使用文件操作或数据库操作。


原文地址: http://www.cveoy.top/t/topic/iRWA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录