P16271 [蓝桥杯 2026 省 Java B 组] 擂台赛

题目描述

小蓝想要组织一场擂台赛,比赛共有 $n$ 位选手,编号为 $1$ 至 $n$。初始时,每位选手 $i$ 都在属于自己的第 $i$ 号擂台上。每位选手 $i$ 都有且仅有一个想要前往挑战的目标擂台 $a_i$。 比赛开始时,小蓝需要制定一个出战顺序。按照该顺序,对于每一位出战选手 $i$: - 如果他的目标擂台 $a_i$ 目前未被关闭,他将离开自己的 $i$ 号擂台并前往 $a_i$ 号擂台发起挑战,同时关闭自己原先所在的擂台 $i$。 - 如果他的目标擂台 $a_i$ 已被关闭,则他无法发起挑战,只能留在原地。 小蓝希望设置一个出战顺序,使得最终被使用过(即作为挑战目标被成功前往)的擂台数量尽可能少。需要注意的是,留在原地的选手并不计入对擂台的使用。 请你帮小蓝计算,在最优的出战顺序下,最少有多少个擂台被使用过?

输入格式

输入共 2 行。 第一行为一个正整数 $n$,表示选手数量。 第二行为 $n$ 个正整数 $a_1, a_2, \dots, a_n$,表示每位选手的目标擂台编号。

输出格式

输出一个整数,表示最少被使用过的擂台数量。

说明/提示

### 【样例说明】 其中一种最优的出战顺序为:$1, 3, 2, 5, 4$。 1. 选手 $1$ 挑战 $2$:目标擂台 $2$ 未关闭,出战成功,关闭擂台 $1$,使用擂台 $2$; 2. 选手 $3$ 挑战 $4$:目标擂台 $4$ 未关闭,出战成功,关闭擂台 $3$,使用擂台 $4$; 3. 选手 $2$ 挑战 $3$:目标擂台 $3$ 已被选手 $3$ 出战时关闭,选手 $2$ 只能留在原地; 4. 选手 $5$ 挑战 $4$:目标擂台 $4$ 未关闭,出战成功,关闭擂台 $5$,使用擂台 $4$; 5. 选手 $4$ 挑战 $5$:目标擂台 $5$ 已被选手 $5$ 出战时关闭,选手 $4$ 只能留在原地。 最终被使用过的擂台为 $\{2, 4\}$,共 $2$ 个。 ### 【评测用例规模与约定】 对于 $30\%$ 的数据,$n \leq 10$; 对于 $100\%$ 的数据,$1 \leq n \leq 10^6$,$1 \leq a_i \leq n$ 且 $a_i \ne i$。