303087: CF601D. Acyclic Organic Compounds

Memory Limit:512 MB Time Limit:3 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

Acyclic Organic Compounds

题意翻译

+ 给定一棵有 $n$ 个节点的有根树 $T$,每个节点从 $1$ 到 $n$ 被编号,根为 $1$,每个节点都有一个字符。 对于一个节点 $v$ 的子树,从 $v$ 到子树中某一个节点的路径上的字符可以组成一个字符串(可能只有一个字符),定义所有不同的字符串的个数为 $\operatorname{dif}(v)$。 并且,对于每个节点 $v$ 都有一个数值 $c_v$,求 $\operatorname{dif}(v)+c_v$ 的最大值,以及最大值的个数。 + 第一行一个数 $n$ ($1\leq n\leq 3\times10^5$),表示树中节点的个数。 第二行 $n$ 个空格分隔的数 $c_i$ ($0\leq c_i\leq 10^9$)。 第三行一个小写英文字符组成的字符串,第 $i$ 个字符表示树上编号为 $i$ 的节点的字符。 接下来 $n-1$ 行描述了树的边。每一行给出两个用空格分隔的整数表示一条树边。 数据保证给出的是一棵树。 + 输出两行,第一行输出 $\operatorname{dif}(i)+c_i$ 的最大值,第二行输出最大值的个数。 + $1\leq n\leq 3\times10^5$,$0\leq c_i\leq 10^9$

题目描述

You are given a tree $ T $ with $ n $ vertices (numbered $ 1 $ through $ n $ ) and a letter in each vertex. The tree is rooted at vertex $ 1 $ . Let's look at the subtree $ T_{v} $ of some vertex $ v $ . It is possible to read a string along each simple path starting at $ v $ and ending at some vertex in $ T_{v} $ (possibly $ v $ itself). Let's denote the number of distinct strings which can be read this way as ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF601D/a0c9096effba09473c4b51e3186b592318344485.png). Also, there's a number $ c_{v} $ assigned to each vertex $ v $ . We are interested in vertices with the maximum value of ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF601D/c561564d7b2aed4877e755dc8d366f0ff87cf302.png). You should compute two statistics: the maximum value of ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF601D/c561564d7b2aed4877e755dc8d366f0ff87cf302.png) and the number of vertices $ v $ with the maximum ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF601D/c561564d7b2aed4877e755dc8d366f0ff87cf302.png).

输入输出格式

输入格式


The first line of the input contains one integer $ n $ ( $ 1<=n<=300000 $ ) — the number of vertices of the tree. The second line contains $ n $ space-separated integers $ c_{i} $ ( $ 0<=c_{i}<=10^{9} $ ). The third line contains a string $ s $ consisting of $ n $ lowercase English letters — the $ i $ -th character of this string is the letter in vertex $ i $ . The following $ n-1 $ lines describe the tree $ T $ . Each of them contains two space-separated integers $ u $ and $ v $ ( $ 1<=u,v<=n $ ) indicating an edge between vertices $ u $ and $ v $ . It's guaranteed that the input will describe a tree.

输出格式


Print two lines. On the first line, print ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF601D/ab594599a15dce04b620c4b306a1a124f3c93d49.png) over all $ 1<=i<=n $ . On the second line, print the number of vertices $ v $ for which ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF601D/f0eef52a01ab9da1eb6f064715fdae90a5a11537.png).

输入输出样例

输入样例 #1

10
1 2 7 20 20 30 40 50 50 50
cacabbcddd
1 2
6 8
7 2
6 2
5 4
5 9
3 10
2 5
2 3

输出样例 #1

51
3

输入样例 #2

6
0 2 4 1 1 1
raaaba
1 2
2 3
2 4
2 5
3 6

输出样例 #2

6
2

说明

In the first sample, the tree looks like this: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF601D/9244e4a8ade3af9b76853a18eae8ae654a6d5be1.png)The sets of strings that can be read from individual vertices are: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF601D/b0a25806e20ff995abfb34a167834abd113ae6f1.png)Finally, the values of ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF601D/c561564d7b2aed4877e755dc8d366f0ff87cf302.png) are: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF601D/6c3fc4aa4c72ec4c2646ac39d7110bd6544e120f.png)In the second sample, the values of ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF601D/4c35255ca2e85f9a2c304b6b5d98f8aa96f62b0c.png) are $ (5,4,2,1,1,1) $ . The distinct strings read in $ T_{2} $ are ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF601D/6427dc79a89c97e7e81a3e52fb54938acda3e0b8.png); note that ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF601D/ff39f896bb407bf8e8d94b0a5b47a67e60c595d8.png) can be read down to vertices $ 3 $ or $ 4 $ .

Input

题意翻译

+ 给定一棵有 $n$ 个节点的有根树 $T$,每个节点从 $1$ 到 $n$ 被编号,根为 $1$,每个节点都有一个字符。 对于一个节点 $v$ 的子树,从 $v$ 到子树中某一个节点的路径上的字符可以组成一个字符串(可能只有一个字符),定义所有不同的字符串的个数为 $\operatorname{dif}(v)$。 并且,对于每个节点 $v$ 都有一个数值 $c_v$,求 $\operatorname{dif}(v)+c_v$ 的最大值,以及最大值的个数。 + 第一行一个数 $n$ ($1\leq n\leq 3\times10^5$),表示树中节点的个数。 第二行 $n$ 个空格分隔的数 $c_i$ ($0\leq c_i\leq 10^9$)。 第三行一个小写英文字符组成的字符串,第 $i$ 个字符表示树上编号为 $i$ 的节点的字符。 接下来 $n-1$ 行描述了树的边。每一行给出两个用空格分隔的整数表示一条树边。 数据保证给出的是一棵树。 + 输出两行,第一行输出 $\operatorname{dif}(i)+c_i$ 的最大值,第二行输出最大值的个数。 + $1\leq n\leq 3\times10^5$,$0\leq c_i\leq 10^9$

加入题单

上一题 下一题 算法标签: