CF1327D Infinite Path
题目描述
给定一个有颜色的排列 $p_1, p_2, \dots, p_n$,第 $i$ 个元素的颜色为 $c_i$。
我们定义一个无限路径为:无限序列 $i, p[i], p[p[i]], p[p[p[i]]], \dots$,其中所有元素的颜色都相同(即 $c[i] = c[p[i]] = c[p[p[i]]] = \dots$)。
我们还可以定义排列 $a$ 和 $b$ 的乘积为排列 $c = a \times b$,其中 $c[i] = b[a[i]]$。此外,排列 $p$ 的 $k$ 次幂定义为 $p^k = \underbrace{p \times p \times \dots \times p}_{k \text{ 次}}$。
请你求出最小的 $k > 0$,使得 $p^k$ 至少存在一条无限路径(即存在某个位置 $i$,从 $i$ 开始的序列是无限路径)。
可以证明答案一定存在。
输入格式
第一行包含一个整数 $T$($1 \le T \le 10^4$),表示测试用例的数量。
接下来的 $3T$ 行,每三行描述一个测试用例。第一行包含一个整数 $n$($1 \le n \le 2 \cdot 10^5$),表示排列的大小。
第二行包含 $n$ 个整数 $p_1, p_2, \dots, p_n$($1 \le p_i \le n$,且 $p_i \neq p_j$ 对于 $i \neq j$),表示排列 $p$。
第三行包含 $n$ 个整数 $c_1, c_2, \dots, c_n$($1 \le c_i \le n$),表示排列中每个元素的颜色。
保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。
输出格式
输出 $T$ 行,每行一个整数。对于每个测试用例,输出最小的 $k > 0$,使得 $p^k$ 至少存在一条无限路径。
说明/提示
在第一个测试用例中,$p^1 = p = [1, 3, 4, 2]$,从 $1$ 开始的序列:$1, p[1] = 1, \dots$ 是一条无限路径。
在第二个测试用例中,$p^5 = [1, 2, 3, 4, 5]$,显然包含多条无限路径。
在第三个测试用例中,$p^2 = [3, 6, 1, 8, 7, 2, 5, 4]$,从 $4$ 开始的序列:$4, p^2[4]=8, p^2[8]=4, \dots$ 是一条无限路径,因为 $c_4 = c_8 = 4$。
由 ChatGPT 4.1 翻译