Description

这里有一个N 个点的树, 节点从1 到N 编号, 第i 条边连接了ai 和bi.
一开始第i 个点上有Ai 个石头. Takahashi 和Aoki 会玩一个游戏.
首先, Takahashi 会选择一个出发点; 然后, 从Takahashi 开始, 他们会轮流进行如下操作:
• 首先, 从当前的点上拿走一个石头.
• 然后, 走到一个相邻的点上.
当一个玩家无法执行操作时, 他就输了. 请你找到所有可以让Takahashi 获胜的出发点.

Input

N
A1 A2 ::: AN
a1 b1 …
aN−1 bN−1

Output

按升序输出一行表示可以让Takahashi 获胜的出发点.

Sample Input

输入1:

3
1 2 3
1 2
2 3

输入2:

5
5 4 1 2 3
1 2
1 3
2 4
2 5

输入3:

3
1 1 1
1 2
2 3

Sample Output

输出1:

2

输出2:

1 2

输出3:

(输出为空)

Data Constraint

对于30% 的数据, N <=7;Ai <= 6;
对于60% 的数据, N <= 2000;
对于100% 的数据, 1 <= N <= 10^6, 1 <= ai, bi <= N; 0 <= Ai <= 10^9, 保证输入的是一棵树.

Solution

  • 设布尔数组 bz[i]bz[i] 表示节点 ii 是否可行(0 不可行,1 可行)。

  • 我们可以发现一个显然的结论:对于一个节点 xx 和它的儿子节点 yy,

  • 如果满足 A[x]>A[y]A[x]>A[y] 且 bz[y]=0bz[y]=0 ,则有 bz[x]=1bz[x]=1 。

  • 因为我可以不断从 xx 走到 yy ,不断把对方“压”到失败点。

  • 那么这样就能从下往上处理出 bzbz 数组,即能 O(N^2) 得出答案。

  • 由于换一次根(O(1)O(1)),子树答案不会改变,只有原根与新根的关系改变了。

  • 所以直接判断其是否符合上述条件即可,时间复杂度 O(N)O(N) 。

Code

#include<cstdio>
using namespace std;
const int N=1e6+1;
int tot;
int first[N],next[N<<1],en[N<<1];
int a[N];
bool bz[N];
inline int read()
{int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w;
}
inline void write(int x)
{if(x>9) write(x/10);putchar(x%10+'0');
}
inline void insert(int x,int y)
{next[++tot]=first[x];first[x]=tot;en[tot]=y;
}
inline void dfs(int x,int y)
{for(int i=first[x];i;i=next[i])if(en[i]!=y){dfs(en[i],x);if(!bz[x] && a[en[i]]<a[x]) bz[x]=!bz[en[i]];}
}
inline void find(int x,int y)
{for(int i=first[x];i;i=next[i])if(en[i]!=y){if(!bz[x] && a[en[i]]>a[x]) bz[en[i]]=true;find(en[i],x);}
}
int main()
{int n=read();for(int i=1;i<=n;i++) a[i]=read();for(int i=1;i<n;i++){int x=read(),y=read();insert(x,y);insert(y,x);}dfs(1,0),find(1,0);for(int i=1;i<=n;i++)if(bz[i]) write(i),putchar(' ');return 0;
}

JZOJ 5448. 【NOIP2017提高A组冲刺11.3】机房比教室好多了相关推荐

  1. JZOJ 5441. 【NOIP2017提高A组冲刺11.1】序列

    Description 给定一个1~n的排列x,每次你可以将x1~xi翻转.你需要求出将序列变为升序的最小操作次数.有多组数据. Input 第一行一个整数t表示数据组数. 每组数据第一行一个整数n, ...

  2. JZOJ 5458. 【NOIP2017提高A组冲刺11.7】质数

    Description 小X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的情感.小X 认为,质数是一切自然数起源的地方. 在小X 的认知里,质数是除了本身和1 以外,没有其他因数的数 ...

  3. JZOJ 5455. 【NOIP2017提高A组冲刺11.6】拆网线

    Description 企鹅国的网吧们之间由网线互相连接,形成一棵树的结构.现在由于冬天到了,供暖部门缺少燃料,于是他们决定去拆一些网线来做燃料.但是现在有K只企鹅要上网和别人联机游戏,所以他们需要把 ...

  4. JZOJ 5445. 【NOIP2017提高A组冲刺11.2】失格

    Description 胆小鬼连幸福都会害怕,碰到棉花都会受伤,有时还被幸福所伤. --太宰治<人间失格> 回顾我的一生,一共有n个事件,每一个事件有一个幸福值p_i. 我想用n-1条线把 ...

  5. JZOJ 5466. 【NOIP2017提高A组冲刺11.9】玩游戏

    Description 小A得了忧郁综合症,小B正在想办法开导她. 机智的小B决定陪着小A玩游戏,他从魔法的世界里变出一张无向联通图,每条边上都有边权.小B定义一条路径的权值为所有经过边中的最大权值, ...

  6. JZOJ 5462. 【NOIP2017提高A组冲刺11.8】好文章

    Description nodgd写了一篇文章,自认为这是一篇好文章.nodgd的文章由n个小写英文字母组成.文章的一个子串指的是文章中的一段连续的字母,子串的长度就是这一段的字母个数.nodgd在文 ...

  7. JZOJ 5463. 【NOIP2017提高A组冲刺11.8】证书

    Description Pulumi生活在P城的角落,而他的朋友们gjdy,oyski,tutuwai等等生活在P城的靠中心位置. P城很大,但它拥有优秀的城市结构,同时P城重视文化教育的发展,P城共 ...

  8. JZOJ 5460. 【NOIP2017提高A组冲刺11.7】士兵训练

    Description Input 第一行两个数n,q 表示士兵数以及阅兵次数. 接下来一行n-1 个整数,第i 个整数表示士兵i+1 的直属教官. 接下来n 行每行两个整数i i b ,l 描述一位 ...

  9. JZOJ 5459. 【NOIP2017提高A组冲刺11.7】密室

    Description 小X 正困在一个密室里,他希望尽快逃出密室. 密室中有N 个房间,初始时,小X 在1 号房间,而出口在N 号房间. 密室的每一个房间中可能有着一些钥匙和一些传送门,一个传送门会 ...

最新文章

  1. Latex博士论文格式版本(在CASthesis基础上作修改)
  2. Scala主构造方法和辅助构造方法
  3. Excel日期函数一览表
  4. dynamo python修改多个参数_40岁小白学了30天python发现,编程真的其乐无穷
  5. 第123天:移动web开发中的常见问题
  6. 开始投靠C#,入门版(一)
  7. 用SecureCRSecurePortable查看动态日志
  8. java 手势识别_【人体分析-手势识别】-Java示例代码
  9. 过拟合的含义、出现原因及解决方案
  10. python模块安装位置_查看python模块的安装路径
  11. v-distpicker
  12. axi_ddr_top
  13. 【飞桨】GAN:U-GAT-IT【2020 ICLR】论文研读
  14. 个人电脑秒变服务器 简单几步,你的电脑也可以成为服务器 (内网穿透)
  15. LDO上电瞬间微过冲问题解决和讨论
  16. www.ku6d.com采集目标
  17. 原 自学JVAVA---(64)--(内功心法【62】)三大案例再升级
  18. 串口调试软件,功能强大,侦测,拦截,逆向分析串口通汛协议
  19. 名帖370 赵孟頫《真草千字文》
  20. 1. Python环境搭建

热门文章

  1. 吴恩达 coursera ML 第七课总结+作业答案
  2. 编程方法学笔记:karel
  3. 使用diskpart命令修复U盘分区
  4. 多进程与多线程的区别 - jihite
  5. 无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]
  6. learning rate四种改变方式
  7. TX2+python+pytorch install
  8. 十三、“词短情长书不尽,桃花潭水是我心。”(2021.2.12)
  9. python long函数_python 内置函数
  10. SqlServer常用函数