P1110 变身

题目描述

给你一个长度为n的数组a,他们的坐标从1到n,并且他们的数值也在1到n之间且两两不同。
数组中的每个元素每轮回合都会变身,变身的结果取决于该元素当前的值,如果在某一个回合该元素的值为u,则下一个回合他会变为a[u]。
比如,给你一个 n=5 的数组 a = [5,1,2,4,3]。
然后我们来看第1个人每一天的状态:

  • 第一天a[1]=5
  • 第二天a[1]变成了3
  • 第三天a[1]变成了2
  • 第四天a[1]变成了1
    所以我们会发现a[1]至少经过4天能变回他自己。
    现在你需要做的是:确定数组中每个元素至少需要几天能变回他自己。

    输入格式

    输入的第一行包含一个整数q(1<=q<=1000),表示询问的数据组数。
    接下来 2q 行,对应q组数据。
    第i组数据的第一行为一个整数n(1<=n<=2
    10^5)。
    第i组数组的第二行为n个整数,两两之间以一个空格分隔,分别用来表示a[1]到a[n]。

    输出格式

    对于n组数据,每组数据输出一行,包含n个整数,两两之间以一个空格分隔,用于表示第i个元素至少需要变化几次能变回它自己。

    样例输入

6
5
1 2 3 4 5
3
2 3 1
6
4 6 2 1 5 3
1
1
4
3 4 1 2
5
5 1 2 4 3

样例输出

1 1 1 1 1
3 3 3
2 3 3 2 1 3
1
2 2 2 2
4 4 4 1 4

猜你喜欢

转载自www.cnblogs.com/problems/p/11784629.html