#P841. 转语言
转语言
当前没有测试数据。
【题目描述】
AYYZ 机房中有 台电脑,互相连接,形成了树状的结构。一些电脑是有 OIer 用的,而一些却没有,每台电脑至多被一个 OIer 使用。
有一天,konicy 和 ayyzlpy 来到了机房,并传来了先进的 C++ 语言。FoolMike 首先更换了语言,随后 FoolMike 又联合 konicy 和 ayyzlpy,号召大家全部使用 C++,否则不给模板。于是大家纷纷把语言换成了 C++(虽然还有人没换),机房的语言实现了大统一。
后来 konicy 退役了,FoolMike 忙于集训队作业无法自拔,机房中的 Pascal 语言又复辟了。而高一的同学们全都学习 C++,于是机房的语言再一次分裂成了 Pascal 和 C++ 两种。
后来冲突愈演愈烈,以至于如果两个使用不同语言的 OIer 的电脑在局域网中直接或间接联通,两个人就会互相攻击导致无法上课……
老师实在看不下去了,于是决定关闭一些电脑(当然有 OIer 使用的电脑是不能关闭的),使得 OIer 之间不会发生冲突。
老师知道你是个神犇,于是要你算出最少要关闭几台电脑才能满足条件。如果永远不能满足条件,请输出“-1”。
【输入格式】
第一行一个整数 ,表示机房的电脑数量。
接下来 行,每行两个整数 ,表示编号为 和 的电脑直接联通。
接下来一行 个整数,第 个整数 表示这台电脑的使用情况, 表示第 台电脑没有 OIer 使用, 表示使用第 台电脑的 OIer 使用 C++ 语言, 表示使用第 台电脑的 OIer 使用 Pascal 语言。
【输出格式】
一行一个整数,表示老师最少要关掉几台电脑,如果无论如何也不能满足条件,请输出“-1”。
【样例 1】
ex_war1.in
10
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
2 0 1 1 0 2 2 0 0 1
ex_war1.ans
3
样例解释
关掉电脑 即可。
【样例 2】
ex_war2.in
6
1 5
5 4
4 3
4 2
4 6
1 1 0 1 2 2
ex_war2.ans
-1
样例解释
不论如何使用电脑 和 的 OIer 都会互相攻击。
【样例 3】
参见样例数据下载。
【数据范围】
对于的数据,。
对于另外的数据,。
对于另外的数据,。
对于的数据,$2 \leq n \leq 3 \times 10^{5}, 1 \le u_i, v_i \le n, u_i \neq v_i,a_i \in \{0, 1, 2\}$。