#CF1926G. Vlad and Trouble at MIT

    ID: 6884 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>深度优先搜索动态规划网络流图论贪心模拟CodeforcesCodeforces Round 928(Div4)Div4GCF1926G1900

Vlad and Trouble at MIT

题目描述

Vladislav 有一个儿子,非常想去 MIT。MIT(摩尔多瓦理工学院)的学生宿舍可以用一棵有 nn 个顶点的树来表示,每个顶点代表一个房间,且每个房间里正好有一名学生。一棵树是一个有 nn 个顶点和 n1n-1 条边的连通无向图。

今晚有三类学生:

  • 想要开派对并播放音乐的学生(用 P\texttt{P} 标记);
  • 想要睡觉并享受安静的学生(用 S\texttt{S} 标记);
  • 不在乎的学生(用 C\texttt{C} 标记)。

最初,所有的边都是薄墙,音乐可以穿透薄墙传播,所以当某个开派对的学生播放音乐时,所有房间都能听到。然而,我们可以在任意边上安装厚墙——厚墙可以阻挡音乐的传播。

学校希望安装一些厚墙,使得每个开派对的学生都能播放音乐,但没有任何想睡觉的学生能听到音乐。

由于学校在冠名权诉讼中损失了大量资金,他们希望你帮忙计算需要使用的最少厚墙数量。

输入格式

第一行包含一个整数 tt1t10001 \leq t \leq 1000),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn2n1052 \leq n \leq 10^5),表示树的顶点数。

每个测试用例的第二行包含 n1n-1 个整数 a2,,ana_2, \dots, a_n1ai<i1 \leq a_i < i),表示在树中第 ii 个顶点与 aia_i 之间有一条边。

每个测试用例的第三行包含一个长度为 nn 的字符串 ss,由字符 P\texttt{P}S\texttt{S}C\texttt{C} 组成,表示第 ii 个学生的类型为 sis_i

所有测试用例中 nn 的总和不超过 10510^5

输出格式

对于每个测试用例,输出一个整数,表示需要安装的最少厚墙数量。

样例

3
3
1 1
CSP
4
1 2 2
PCSS
4
1 2 2
PPSS
1
1
2

样例说明

在第一个样例中,我们可以在房间 1122 之间安装一堵厚墙,如下图所示。不能不安装墙,否则房间 33 的音乐会传到房间 22,而房间 22 的学生想要睡觉,所以答案是 11。当然,也存在其他可行方案。

由 ChatGPT 4.1 翻译

来源

Codeforces 1926G,英文题名 Vlad and Trouble at MIT。