7-35 部落 (10 分)
7-35 部落 (10 分)
在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同一个部落。
输入格式:
输入在第一行给出一个正整数N(≤104),是已知小圈子的个数。随后N行,每行按下列格式给出一个小圈子里的人:
K P[1] P[2] ⋯ P[K]
其中K是小圈子里的人数,P[i](i=1,⋯,K)是小圈子里每个人的编号。这里所有人的编号从1开始连续编号,最大编号不会超过104。
之后一行给出一个非负整数Q(≤104),是查询次数。随后Q行,每行给出一对被查询的人的编号。
输出格式:
首先在一行中输出这个社区的总人数、以及互不相交的部落的个数。随后对每一次查询,如果他们属于同一个部落,则在一行中输出Y
,否则输出N
。
输入样例:
4
3 10 1 2
2 3 4
4 1 5 7 8
3 9 6 4
2
10 5
3 7
结尾无空行
输出样例:
10 2
Y
N
结尾无空行
#include<iostream>
using namespace std;
const int N = 1010;
int n, k, a, b, p[N], maxn, cnt, m;
int find(int x) {if(x != p[x]) p[x] = find(p[x]);return p[x];
}
void add(int x, int y) {x = find(x), y = find(y);p[x] = find(y);
}
void init() {for (int i = 1; i <= N; i++) {p[i] = i;}
}
int main() {cin >> n;init();for (int i = 0; i < n; i++) {cin >> k;for (int j = 0; j < k; j++) {if(j == 0) {cin >> a;maxn = max(a, maxn);}else {cin >> b;maxn = max(b, maxn);add(a, b);}}}for (int i = 1; i <= maxn; i++) {if (p[i] == i) cnt++;}cout << maxn << ' ' << cnt << endl;cin >> m;for (int i = 0; i < m; i++) {cin >> a >> b;if(find(a) != find(b)) cout << "N\n";else cout << "Y\n";}return 0;
}
7-35 部落 (10 分)相关推荐
- 7-13 部落 (25 分)
在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈.我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同 ...
- C++学习之路 | PTA(天梯赛)—— L2-024 部落 (25分)(带注释)(并查集)(精简)
L2-024 部落 (25分) 在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈.我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部 ...
- 7-323 逆波兰表达式 (10 分)
7-323 逆波兰表达式 (10 分) 逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3.逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改 ...
- PTA18、图的字典表示 (10 分)
18.图的字典表示 (10 分) 图的字典表示.输入多行字符串,每行表示一个顶点和该顶点相连的边及长度,输出顶点数,边数,边的总长度.比如上图0点表示: {'O':{'A':2,'B':5,'C':4 ...
- 热门开源后端软件Parse Server中存在严重的 RCE ,CVSS评分10分
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全 ...
- 【CCCC】L2-024 部落 (25分),,并查集,模板水题,统计集合个数
problem L2-024 部落 (25分) 在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈.我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多 ...
- 7-2 打印九九口诀表 (10 分)
7-2 打印九九口诀表 (10 分) 下面是一个完整的下三角九九口诀表: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1 ...
- 6-3 设计一个长方体类Cuboid (10 分)
6-3 设计一个长方体类Cuboid (10 分) 要求:设计一个名为Cuboid的类表示长方体.这个类包括三个名为length.width和height 的double型数据域,它们分别表示长方体的 ...
- 10年java 工作难找吗_对比3-5年和10年的Java程序员,差距在哪里?
对比3-5年和10年的Java程序员,差距在哪里? 找工作过程中我们经常会看到"与工作年限相匹配的水平"这样的字眼,那么究竟什么样才算是匹配呢? 当然,这个话题可以说是仁者见仁,智 ...
最新文章
- 如何复制静态文件以使用Webpack构建目录?
- maven3常用命令、java项目搭建、web项目搭建
- eclipse安装hadoop插件及配置
- Mondrian 3.14.0 服务配置说明(限功能使用验证)
- 搞多媒体开发?吴威麒:先拉个书单看看
- qq互联android sdk,qq互联.Android
- 潍职e校帮APP功能简介
- php rest api lumen,lumen Rest API 起步
- 「PDF Expert」macOS 全能型 PDF 工具——功能介绍
- 一些CFD名词缩写的含义(持续更新中)
- <数据结构> 顺序表
- C# 如何将EMF文件转换成PNG文件
- NC—NCC常用数据库表
- 人体各部分英语 图片
- Android:layout_weight详解
- Chrome 扩展 Pomodoro 开发小结
- 赛尔号对战c语言程序,赛尔号计算解析系列文章(第一期)
- A7600C USIM卡接口设计
- 抓包神器 Charles 使用教程详解
- Bitbucket使用说明与SourceTree的使用