CF2044G2.Medium Demon Problem (hard version)

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

这是该问题的困难版本。两个版本之间的关键区别已用粗体强调。

有一群 nn 只蜘蛛聚在一起交换毛绒玩具。一开始,每只蜘蛛手里都有一个毛绒玩具。每年,如果第 ii 只蜘蛛至少有一个毛绒玩具,它会把自己的一个毛绒玩具送给第 rir_i 只蜘蛛。否则,它会选择不做任何事情。注意,所有毛绒玩具的转移同时进行。在这个版本中,每只蜘蛛在任何时候都可以拥有多个毛绒玩具。

如果今年(在进行交换之前)每只蜘蛛拥有的毛绒玩具数量与去年(交换之前)相同,那么这一年就是稳定的。需要注意的是,第一年不可能是稳定的。

请找出施行直到稳定的第一个年份。

输入格式

第一行输入一个整数 tt(1≤t≤1041 \leq t \leq 10^4),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn(2≤n≤2⋅1052 \leq n \leq 2 \cdot 10^5),表示蜘蛛的数量。

接下来的一行包含 nn 个整数 r1,r2,…,rnr_1, r_2, \ldots, r_n(1≤ri≤n,ri≠i1 \leq r_i \leq n, r_i \neq i),表示每只蜘蛛所指定的收件蜘蛛编号。

保证所有测试用例中 nn 的总和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例,输出一个整数代表过程第一次变得稳定的年份。

输入输出样例

  • 输入#1

    5
    2
    2 1
    5
    2 3 4 5 1
    5
    2 1 4 2 3
    5
    4 1 1 5 4
    10
    4 3 9 1 6 7 9 10 10 3

    输出#1

    2
    2
    5
    5
    5

说明/提示

对于第二个测试用例:

  • 第一年,每只蜘蛛拥有的毛绒玩具数量为:[1,1,1,1,1][1, 1, 1, 1, 1]。接下来进行第一次交换。
  • 第二年,每只蜘蛛拥有的毛绒玩具数量仍为:[1,1,1,1,1][1, 1, 1, 1, 1]。由于这个数组与去年相同,所以第二年是稳定的。

对于第三个测试用例:

  • 第一年,每只蜘蛛拥有的毛绒玩具数量为:[1,1,1,1,1][1, 1, 1, 1, 1]。接下来进行第一次交换。
  • 第二年,每只蜘蛛拥有的毛绒玩具数量变为:[1,2,1,1,0][1, 2, 1, 1, 0]。随后进行第二次交换。
  • 第三年,每只蜘蛛拥有的毛绒玩具数量变为:[1,3,0,1,0][1, 3, 0, 1, 0]。随后进行第三次交换。
  • 第四年,每只蜘蛛拥有的毛绒玩具数量变为:[1,4,0,0,0][1, 4, 0, 0, 0]。随后进行第四次交换。
  • 第五年,每只蜘蛛拥有的毛绒玩具数量仍为:[1,4,0,0,0][1, 4, 0, 0, 0]。由于这个阵列与上一年相同,第五年是稳定的。

本翻译由 AI 自动生成

输入解题思路,AI测评打分。不知道怎么写?

首页