首页 > 试题广场 >

小红的小红树

[编程题]小红的小红树
  • 热度指数:85 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小红在刷小红书的时候看到了一颗挂着小红薯的小红树,所以小红也想种一颗小红树挂一些小红薯发小红书。

小红有一颗树,每个结点有一个权值,初始时每个节点都是白色。小红每次操作可以选择两个相邻的结点,如果它们都是白色且权值的和是质数,小红就可以选择其中一个节点染红。

小红想知道最多可以染红多少个节点?

输入描述:
第一行输入一个正整数n,代表节点的数量。
第二行输入n个正整数a_i,代表每个节点的权值。
接下来的n-1行,每行输入两个正整数u,v,代表节点u和节点v有一条边连接。
1\leq n \leq 10^5
1\leq a_i \leq 10^5
1\leq u,v \leq n


输出描述:
输出一个整数表示答案。
示例1

输入

3
1 2 3
1 2
1 3

输出

1

说明

节点1和节点2权值和为3,是质数,所以小红可以染红节点1或节点2,此时无法再染红其他节点。

这道题你会答吗?花几分钟告诉大家答案吧!