#P13191. [GCJ 2016 #1A] BFFs

    ID: 13014 远端评测题 5000ms 1024MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>图论2016深度优先搜索 DFSGoogle Code Jam

[GCJ 2016 #1A] BFFs

Description

你是一所新开的 Little Coders 幼儿园的老师。你的班级里有 N\mathbf{N} 个孩子,每个孩子的学号从 11N\mathbf{N},互不相同。班里的每个孩子都有一个唯一的“永远的最好的朋友”(BFF),你知道每个孩子的 BFF 是谁。BFF 关系不一定是互相的——也就是说,B 是 A 的 BFF,并不意味着 A 一定是 B 的 BFF。

你的明天的教学计划中有一个活动,要求参与的孩子围成一个圆圈坐下。你希望活动尽可能成功,因此想让尽可能多的孩子围成一个圈,并且要求圈中的每个孩子都必须与自己的 BFF 紧邻(可以在左边,也可以在右边)。没有进入圈子的孩子则只能在一旁观摩。

请问,最多可以有多少个孩子围成满足条件的圆圈?

Input Format

输入的第一行包含一个整数 T\mathbf{T},表示测试用例数量。接下来有 T\mathbf{T} 组测试用例。每组测试用例包含两行。第一行为一个整数 N\mathbf{N},表示班级中孩子的总数。第二行为 N\mathbf{N} 个整数 $\mathbf{F}_1, \mathbf{F}_2, \ldots, \mathbf{F}_\mathbf{N}$,其中 Fi\mathbf{F}_i 表示学号为 ii 的孩子的 BFF 的学号。

Output Format

对于每组测试用例,输出一行 Case #x: y,其中 xx 表示测试用例编号(从 1 开始),yy 表示可以围成满足条件的最大孩子数。

4
4
2 3 4 1
4
3 3 4 1
4
3 3 4 3
10
7 8 10 10 9 2 9 6 3 3
Case #1: 4
Case #2: 3
Case #3: 3
Case #4: 6

Hint

样例解释

在样例第 4 组中,最大可能的圆圈可以让如下孩子按如下顺序围成一圈:7 9 3 10 4 1。(该圆圈的任意旋转或反转也都符合条件。)注意,学号为 1 的孩子与学号为 7 的孩子相邻,符合题目要求,因为该列表表示一个圆圈。

限制条件

  • 1T1001 \leqslant \mathbf{T} \leqslant 100
  • 对所有 ii1FiN1 \leqslant \mathbf{F}_i \leqslant \mathbf{N}
  • 对所有 iiFii\mathbf{F}_i \neq i(没有孩子把自己当作 BFF)。

小数据集(16 分,测试集 1 - 可见)

  • 3N103 \leqslant \mathbf{N} \leqslant 10

大数据集(29 分,测试集 2 - 隐藏)

  • 3N10003 \leqslant \mathbf{N} \leqslant 1000

翻译由 GPT4.1 完成。