color
题目描述
给出一棵 n 个节点的有根树,每个叶子有一个或黑或白的颜色,而对于非叶子节点的颜色按以下规则定义,如果它的所有儿子节点的颜色全部相同,则为它儿子的颜色,否则为灰色。
现在有 m 次操作,每次操作会修改一个叶子节点的颜色(由白变黑或由黑变白),每次操作后对应的非叶子节点的颜色也会发生改变。求每次操作后黑白灰三种颜色的节点个数。
输入格式
第一行两个整数 n,m ,表示树的节点个数和操作次数。
第二行一共 n 个整数, pi 表示编号为 i 的节点的父亲节点编号,若 pi=0 则该节点为整棵树的根。
第三行一个 n 个整数, ci 表示编号为 i 的节点的初始颜色(1表示黑色,0表示白色),非叶子节点信息无意义。
接下来一共 m 行,每行一个数,表示修改颜色的节点的编号,保证该节点一定为叶子节点。
输出格式
一共 m 行,每行三个整数,分别表示黑色,白色和灰色节点的个数。
样例
输入
7 5 0 1 1 2 2 2 3 0 1 0 1 1 1 0 4 6 7 5 6
输出
2 3 2 1 4 2 3 2 2 2 4 1 3 2 2
数据范围
n,m≤100000,pi<i,只有一个pi=0。
Subtask1 (30%) : n,m≤1000 。
Subtask2 (70%) :无特殊限制。
时间限制: 1s 。
空间限制: 256MB 。