叶子的颜色

提交数: 20, 通过率: 95%, 平均分: 95

题目描述:

给一棵m个结点的无根树,你可以选择一个度数大于1的结点作为根,然后给一些结点(根、内部结点和叶子均可)着以黑色或白色。你的着色方案应该保证根结点到每个叶子的简单路径上都至少包含一个有色结点(哪怕是这个叶子本身)。

对于每个叶结点u,定义c[u]为从根结点到u的简单路径上最后一个有色结点的颜色。给出每个c[u]的值,设计着色方案,使得着色结点的个数尽量少。

输入格式:

第一行包含两个正整数m, n,其中n是叶子的个数,m是结点总数。结点编号为1,2,…,m,其中编号1,2,… ,n是叶子。以下n行每行一个0或1的整数(0表示黑色,1表示白色),依次为c[1],c[2],…,c[n]。以下m-1行每行两个整数a,b(1<=a < b <= m),表示结点a和b 有边相连。

输出格式:

仅一个数,即着色结点数的最小值。

样例输入:

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

样例输出:

2

提示:

【数据规模】

数据

1

2

3

4

5

6

7

8

9

10

m

10

50

100

200

400

1000

4000

8000

10000

10000

n

5

23

50

98

197

498

2044

4004

5021

4996

时间限制: 1000ms
空间限制: 256MB