CF2008D.Sakurako's Hobby
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
对于一个给定的排列 $ p $,Sakurako 称整数 $ j $ 从整数 $ i $ 可达,意思是可以通过若干次操作将 $ i $ 改为 $ p_i $,最终使 $ i $ 等于 $ j $。
举个例子,如果 $ p=[3,5,6,1,2,4] $,那么 $ 4 $ 是从 $ 1 $ 可达的,因为变化过程可以是:$ i=1 \rightarrow i=p_1=3 \rightarrow i=p_3=6 \rightarrow i=p_6=4 $。这样 $ i $ 就变成了 $ 4 $,因此 $ 4 $ 是从 $ 1 $ 可达的。
在这个排列中,每个数字都有两种颜色:黑色或白色。
Sakurako 定义了一个函数 $ F(i) $,表示从 $ i $ 可达的黑色整数的总数。
她对每一个 $ 1\le i\le n $ 的 $ F(i) $ 都很感兴趣,但计算所有值太过复杂,因此她希望你能帮助她解决这个问题。
一个长度为 $ n $ 的排列是一个由 $ 1 $ 到 $ n $ 这 $ n $ 个不同整数构成的数组。例如,$ [2,3,1,5,4] $ 是一个排列,而 $ [1,2,2] $ 却不是(因为数字 $ 2 $ 出现了两次),同样地,$ [1,3,4] $ 也不是($ n=3 $,但数组中包含 $ 4 $)。
输入格式
第一行输入一个整数 $ t ( 1\le t\le 10^4 $),表示测试用例的数量。
每个测试用例的第一行包含一个整数 $ n ( 1\le n\le 2\cdot 10^5 $),表示数组中元素的数量。
接下来的每一行包含 $ n $ 个整数 $ p_1, p_2, \dots, p_n ( 1\le p_i\le n $),表示排列的具体内容。
随后的一行包含一个由字符 '0' 和 '1' 组成的长度为 $ n $ 的字符串 $ s $。如果 $ s_i=0 $,则表示数字 $ p_i $ 是黑色;如果 $ s_i=1 $,则表示数字 $ p_i $ 是白色。
保证所有测试用例之中 $ n $ 的总和不超过 $ 2\cdot 10^5 $。
输出格式
对于每个测试用例,输出 $ n $ 个整数 $ F(1), F(2), \dots, F(n) $。
本翻译由 AI 自动生成
输入输出样例
输入#1
5 1 1 0 5 1 2 4 5 3 10101 5 5 4 1 3 2 10011 6 3 5 6 1 2 4 010000 6 1 2 3 4 5 6 100110
输出#1
1 0 1 1 1 1 2 2 2 2 2 4 1 4 4 1 4 0 1 1 0 0 1
输入解题思路,AI测评打分。不知道怎么写?