牛客小白月赛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.树上行走相关推荐

  1. 牛客小白月赛6 J.洋灰三角

    牛客小白月赛6 J.洋灰三角 题目链接 题目描述 洋灰是一种建筑材料,常用来筑桥搭建高层建筑,又称,水泥.混凝土. WHZ有很多铸造成三角形的洋灰块,他想把这些洋灰三角按照一定的规律放到摆成一排的n个 ...

  2. 牛客小白月赛24 J.建设道路

    牛客小白月赛24 J.建设道路 题目链接 题目描述 牛牛国有 nnn 个城市,编号为 1-n,第 iii 个城市有一个价值 aia_iai​ ,牛国的国王牛阔落特别喜欢在牛牛国旅游,并且他不想每次旅游 ...

  3. 牛客小白月赛28 D.位运算之谜

    牛客小白月赛28 D.位运算之谜 题目链接 题目描述 a+ba + ba+b 的值为 xxx,a&ba\&ba&b 的值为 yyy,首先需要判断能否有一组 a,ba,ba,b ...

  4. 牛客小白月赛21 J.Jelly

    牛客小白月赛21 J.Jelly 题目描述 Nancy喜欢吃果冻! Nancy钻进了一个n×n的果冻里,她想从(1,1,1)一路上.下.左.右.前.后六个方向吃到(n,n,n). 但果冻毕竟是有许多口 ...

  5. 牛客小白月赛28 B.牛牛和牛可乐的赌约2

    牛客小白月赛28 B.牛牛和牛可乐的赌约2 题目链接 题目描述 牛牛感觉在上一次赌约中,情况对于自己非常不利,所以决定再赌一场. 这时候,牛蜓队长出现了:第一,绝对不意气用事:第二,绝对不漏判任何一件 ...

  6. 牛客小白月赛28 E-会当凌绝顶,一览众山小 线段树+二分暴力模拟

    牛客小白月赛28 E-会当凌绝顶,一览众山小 线段树+二分暴力模拟 题意 思路 Code 传送门: https://ac.nowcoder.com/acm/contest/16081/E 题意 登山顺 ...

  7. 牛客小白月赛28 G.牛牛和字符串的日常

    牛客小白月赛28 G.牛牛和字符串的日常 题目链接 题目描述 牛牛每天都要做的事就是读书,从书里找自己喜欢的句子,他每天都会去读一本书,如果牛牛今天读的书的某连续 k k k 个字符刚好是牛牛喜欢句子 ...

  8. 牛客小白月赛6 J 洋灰三角

    J  洋灰三角 题目: 链接:https://www.nowcoder.com/acm/contest/136/J 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262 ...

  9. 牛客小白月赛6 J 洋灰三角 数学

    链接:https://www.nowcoder.com/acm/contest/136/J 来源:牛客网 题目描述 洋灰是一种建筑材料,常用来筑桥搭建高层建筑,又称,水泥.混凝土. WHZ有很多铸造成 ...

最新文章

  1. C++中相对路径和绝对路径
  2. Scribe日志收集工具
  3. MySQL读写分离一主多从实现
  4. 冷热分离和直接使用大数据库_还不知道HBase冷热分离的技术原理?看这一篇就够了...
  5. 【XCTF 攻防世界 web 练习详解系列(二)】【get_post的两种解法】
  6. 谷歌修复 Chrome 站点隔离绕过漏洞
  7. python 短视频_短视频篇 | Python 带你进行短视频二次创作
  8. SAE J1939 协议源代码分析(二)-程序移植
  9. css+js显示点阵字体/LED七段数码管字体(模拟)
  10. GIS 地图制作 学习总结
  11. Android ExoPlayer源码分析
  12. 利用IDEA模板快速生成swagger注解
  13. Ubuntu安装摄像头驱动
  14. .net中使用ckeditor4+ckfinder上传图片
  15. 90后马来西亚女孩闯华为
  16. 【gazebo要素4】传感器插件(Velodyne)
  17. 计算机硬盘容量单位换算,为什么新硬盘容量不对是什么原因?原来是硬盘容量单位换算的问题...
  18. html5图片并排显示图片,HTML5 - 并排显示项目
  19. Java基础知识系列之-抽象abstract
  20. 【超融合】超融合产品怎么选?

热门文章

  1. 根据瘦子的日历,改装了一个月历控件
  2. slowfast模型浅析
  3. 理解Vue中的methods对象方法里的this指向,并解读源码
  4. 《超算竞赛导引》笔记
  5. 生成全局唯一ID的3个思路
  6. 雷军:做互联网需7字诀
  7. 加速度,速度,位移和时间的关系
  8. led灯串怎么摆造型_用灯带设计的造型图片
  9. 【成神之路】多线程并发相关面试题
  10. 入门级蛋白质结构查看PyMol的使用——用PyMol制作视频movie