牛客小白月赛28 J.树上行走
牛客小白月赛28 J.树上行走
题目链接
题目描述
牛牛苦练武功绝学——轻功水上漂,最终没有练成,但是他学会了在树上行走的本领。
这天,牛牛落入了敌人的陷阱,身后有巨石追击,面前有n个点,n-1条边连成一张连通图(一棵树),现在牛牛必须立马选择进入这张图中,但是牛牛发现,这张图有两种不同的点,一旦进入一个点,所有与该点不同类型的点都会消失(相连的边也会消失),牛牛只能走到有边相连的点,牛牛想要自己尽量有更多的点可以活动,那么他可以进入哪些点?
输入描述:
第一行有一个正整数 nnn 表示共有 nnn 个点 (n≤2×105)(n\leq2×10^5)(n≤2×105)
第二行有 nnn 个数 aia_iai 表示两种类型的点 (0≤ai≤1)(0 \leq a_i\leq 1)(0≤ai≤1)
接下来 n−1n−1n−1 行每行有两个正整数 u,v(u,v≤n)u,v(u,v\leq n)u,v(u,v≤n) 表示 uuu 和 vvv 之间有一条边
输出描述:
第一行输出可以进入的点的个数
第二行从小到大输出这些点的编号
示例1
输入
3
1 1 0
1 2
1 3
输出
2
1 2
示例2
输入
4
1 1 0 0
1 2
2 3
3 4
输出
4
1 2 3 4
典型的并查集~
题目首先要求最大连通块,我们可以在合并时顺带合并数量,合并操作也很简单,就是当两者种类相同时就合并,最后查找每个点所在联通块的大小,如果等于最大值就放到答案数组里,AC代码如下:
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int n,u,v,mx=0,vis[N],type[N],father[N],sum[N];
vector<int>ans;
int Findfather(int x){return father[x]==x?x:father[x]=Findfather(father[x]);
}void Union(int x,int y){x=Findfather(x),y=Findfather(y);if(x!=y) father[y]=x,sum[x]+=sum[y];
}void init(){for(int i=0;i<=n;i++)father[i]=i,sum[i]=1;
}int main() {cin>>n;init();for(int i=1;i<=n;i++) cin>>type[i];for(int i=1;i<n;i++){cin>>u>>v;if(type[u]==type[v]) Union(u,v);int x=Findfather(u),y=Findfather(v);mx=max({mx,sum[x],sum[y]});}for(int i=1;i<=n;i++){if(sum[Findfather(i)]==mx) ans.push_back(i);}cout<<ans.size()<<endl;for(auto i:ans) cout<<i<<" ";return 0;
}
牛客小白月赛28 J.树上行走相关推荐
- 牛客小白月赛6 J.洋灰三角
牛客小白月赛6 J.洋灰三角 题目链接 题目描述 洋灰是一种建筑材料,常用来筑桥搭建高层建筑,又称,水泥.混凝土. WHZ有很多铸造成三角形的洋灰块,他想把这些洋灰三角按照一定的规律放到摆成一排的n个 ...
- 牛客小白月赛24 J.建设道路
牛客小白月赛24 J.建设道路 题目链接 题目描述 牛牛国有 nnn 个城市,编号为 1-n,第 iii 个城市有一个价值 aia_iai ,牛国的国王牛阔落特别喜欢在牛牛国旅游,并且他不想每次旅游 ...
- 牛客小白月赛28 D.位运算之谜
牛客小白月赛28 D.位运算之谜 题目链接 题目描述 a+ba + ba+b 的值为 xxx,a&ba\&ba&b 的值为 yyy,首先需要判断能否有一组 a,ba,ba,b ...
- 牛客小白月赛21 J.Jelly
牛客小白月赛21 J.Jelly 题目描述 Nancy喜欢吃果冻! Nancy钻进了一个n×n的果冻里,她想从(1,1,1)一路上.下.左.右.前.后六个方向吃到(n,n,n). 但果冻毕竟是有许多口 ...
- 牛客小白月赛28 B.牛牛和牛可乐的赌约2
牛客小白月赛28 B.牛牛和牛可乐的赌约2 题目链接 题目描述 牛牛感觉在上一次赌约中,情况对于自己非常不利,所以决定再赌一场. 这时候,牛蜓队长出现了:第一,绝对不意气用事:第二,绝对不漏判任何一件 ...
- 牛客小白月赛28 E-会当凌绝顶,一览众山小 线段树+二分暴力模拟
牛客小白月赛28 E-会当凌绝顶,一览众山小 线段树+二分暴力模拟 题意 思路 Code 传送门: https://ac.nowcoder.com/acm/contest/16081/E 题意 登山顺 ...
- 牛客小白月赛28 G.牛牛和字符串的日常
牛客小白月赛28 G.牛牛和字符串的日常 题目链接 题目描述 牛牛每天都要做的事就是读书,从书里找自己喜欢的句子,他每天都会去读一本书,如果牛牛今天读的书的某连续 k k k 个字符刚好是牛牛喜欢句子 ...
- 牛客小白月赛6 J 洋灰三角
J 洋灰三角 题目: 链接:https://www.nowcoder.com/acm/contest/136/J 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262 ...
- 牛客小白月赛6 J 洋灰三角 数学
链接:https://www.nowcoder.com/acm/contest/136/J 来源:牛客网 题目描述 洋灰是一种建筑材料,常用来筑桥搭建高层建筑,又称,水泥.混凝土. WHZ有很多铸造成 ...
最新文章
- C++中相对路径和绝对路径
- Scribe日志收集工具
- MySQL读写分离一主多从实现
- 冷热分离和直接使用大数据库_还不知道HBase冷热分离的技术原理?看这一篇就够了...
- 【XCTF 攻防世界 web 练习详解系列(二)】【get_post的两种解法】
- 谷歌修复 Chrome 站点隔离绕过漏洞
- python 短视频_短视频篇 | Python 带你进行短视频二次创作
- SAE J1939 协议源代码分析(二)-程序移植
- css+js显示点阵字体/LED七段数码管字体(模拟)
- GIS 地图制作 学习总结
- Android ExoPlayer源码分析
- 利用IDEA模板快速生成swagger注解
- Ubuntu安装摄像头驱动
- .net中使用ckeditor4+ckfinder上传图片
- 90后马来西亚女孩闯华为
- 【gazebo要素4】传感器插件(Velodyne)
- 计算机硬盘容量单位换算,为什么新硬盘容量不对是什么原因?原来是硬盘容量单位换算的问题...
- html5图片并排显示图片,HTML5 - 并排显示项目
- Java基础知识系列之-抽象abstract
- 【超融合】超融合产品怎么选?