P13191 [GCJ 2016 #1A] BFFs
题目描述
你是一所新开的 Little Coders 幼儿园的老师。你的班级里有 $\mathbf{N}$ 个孩子,每个孩子的学号从 $1$ 到 $\mathbf{N}$,互不相同。班里的每个孩子都有一个唯一的“永远的最好的朋友”(BFF),你知道每个孩子的 BFF 是谁。BFF 关系不一定是互相的——也就是说,B 是 A 的 BFF,并不意味着 A 一定是 B 的 BFF。
你的明天的教学计划中有一个活动,要求参与的孩子围成一个圆圈坐下。你希望活动尽可能成功,因此想让尽可能多的孩子围成一个圈,并且要求圈中的每个孩子都必须与自己的 BFF 紧邻(可以在左边,也可以在右边)。没有进入圈子的孩子则只能在一旁观摩。
请问,最多可以有多少个孩子围成满足条件的圆圈?
输入格式
输入的第一行包含一个整数 $\mathbf{T}$,表示测试用例数量。接下来有 $\mathbf{T}$ 组测试用例。每组测试用例包含两行。第一行为一个整数 $\mathbf{N}$,表示班级中孩子的总数。第二行为 $\mathbf{N}$ 个整数 $\mathbf{F}_1, \mathbf{F}_2, \ldots, \mathbf{F}_\mathbf{N}$,其中 $\mathbf{F}_i$ 表示学号为 $i$ 的孩子的 BFF 的学号。
输出格式
对于每组测试用例,输出一行 `Case #x: y`,其中 $x$ 表示测试用例编号(从 1 开始),$y$ 表示可以围成满足条件的最大孩子数。
说明/提示
**样例解释**
在样例第 4 组中,最大可能的圆圈可以让如下孩子按如下顺序围成一圈:`7 9 3 10 4 1`。(该圆圈的任意旋转或反转也都符合条件。)注意,学号为 1 的孩子与学号为 7 的孩子相邻,符合题目要求,因为该列表表示一个圆圈。
**限制条件**
- $1 \leqslant \mathbf{T} \leqslant 100$。
- 对所有 $i$,$1 \leqslant \mathbf{F}_i \leqslant \mathbf{N}$。
- 对所有 $i$,$\mathbf{F}_i \neq i$(没有孩子把自己当作 BFF)。
**小数据集(16 分,测试集 1 - 可见)**
- $3 \leqslant \mathbf{N} \leqslant 10$。
**大数据集(29 分,测试集 2 - 隐藏)**
- $3 \leqslant \mathbf{N} \leqslant 1000$。
翻译由 GPT4.1 完成。