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 完成。