#P658. 彩色树

彩色树

题目描述

给定一棵 nn 个点的树,11 号点为根。每个点有一个颜色,点 ii 的颜色为 cic_i。定义树上某两点之间的路径的分数为这条路径中出现过的不同颜色的数量。

请求出树上任意两个不同结点之间的路径分数的和。

输入格式

  • 第一行:单个整数 nn
  • 第二行:nn 个整数,表示 c1,c2,,cnc_1,c_2,\dots,c_n
  • 第三行:n1n-1 个整数,表示 p2,p3,,pnp_2,p_3,\dots,p_n,其中 pip_i 表示结点 ii 的父亲,保证 pi<ip_i<i

输出格式

单个整数:表示所有路径的分数之和。

3
1 2 1
1 2
6
6
1 2 3 2 1 1
1 2 2 1 5
29

数据范围

  • 对于 30%30\% 的数据,满足 n2000n \leq 2000
  • 对于 60%60\% 的数据,满足 n200,000n \leq 200,000ci50c_i \le 50
  • 对于 100%100\% 的数据,满足 2n200,0002 \leq n \leq 200,0001cin1\leq c_i \le n