#P14980. [USACO26JAN1] COW Traversals G

[USACO26JAN1] COW Traversals G

题目描述

农夫 John 的农场上有 NN 头(1N21051\le N\le 2\cdot 10^5)奶牛,编号为 1N1\dots N,每头奶牛住在自己的牛棚里。每头奶牛 ii 都有一个最好的朋友 aia_i1aiN1\le a_i\le N)。奶牛可以与自己做最好的朋友,并且多头奶牛可以有相同的最好朋友。奶牛们喜欢聚会,因此它们决定连续举办 MM1M21051\le M\le 2\cdot 10^5)个晚上的聚会。

在第 ii 个晚上,奶牛 cic_i 决定在自己的牛棚举办一场类型为 tit_i 的聚会,其中 ti"COW"t_i\in \texttt{"COW"}。这个聚会将在之后的所有晚上持续存在,直到奶牛 cic_i 决定举办一个不同类型的聚会为止。

每个晚上,每头奶牛都会试图去参加一个聚会。如果一头奶牛不是聚会的举办者,它会先查看它最好朋友的牛棚,如果那里没有聚会,它就会跟随它最好的朋友去它要去的地方(那头奶牛也可能跟随它最好的朋友,依此类推)。有可能一头奶牛永远找不到聚会,那么它当晚就会放弃。

计算每个晚上,最终分别参加类型为 C\texttt{C}O\texttt{O}W\texttt{W} 的聚会的奶牛数量。

输入格式

第一行包含 NN,表示奶牛的数量。

第二行包含 a1,,aNa_1,\dots, a_N,其中 aia_i 是奶牛 ii 的最好的朋友。

第三行包含 MM,表示晚上的数量。

接下来的 MM 行,每行包含一个整数 cic_i1ciN1\le c_i\le N)和一个字符 viv_i,分别表示举办聚会的奶牛和聚会类型。

输出格式

输出 MM 行,第 ii 行包含 33 个空格分隔的整数,分别表示第 ii 个晚上参加类型为 C\texttt{C}O\texttt{O}W\texttt{W} 的聚会的奶牛数量。

5
2 3 4 5 4
4
2 C
4 C
4 W
2 O
2 0 0
5 0 0
2 0 3
0 2 3

提示

在第 11 个晚上,只有牛棚 22 有一个类型为 C\texttt{C} 的聚会,只有奶牛 1122 参加。

在第 22 个晚上,牛棚 44 新增了一个类型为 C\texttt{C} 的聚会,奶牛 334455 现在可以到达该聚会。

在第 33 个晚上,牛棚 44 的聚会类型变为 W\texttt{W},影响奶牛 334455

在第 44 个晚上,牛棚 22 的聚会类型变为 O\texttt{O},影响奶牛 1122


  • 输入 22N,M100N, M \leq 100
  • 输入 33-44N,M4000N, M \leq 4000
  • 输入 55-99{ai}\{a_i\}{1,,N}\{1,\dots, N\} 的一个排列
  • 输入 1010-2121:无额外约束。

翻译由 DeepSeek V3 完成