已结束 GESP欢乐赛#40

A4746 | 座位问题

时间限制1s
内存限制128MB
通过 / 提交0/0

题目描述

有一个班级共有 $n$ 位同学,他们的学号分别为 $1, 2, 3, \dots, n$,并且每位同学有一个座位号 $a_1, a_2, \dots, a_n$,座位号是学生的初始座位。一个学生"快乐"当且仅当他的座位号 $a_i$ 和他们的学号 $i$ 不相等。现在,你可以任意交换两位同学的座位,为了让所有学生都"快乐",你需要使每位学生的座位号与学号不同。请问,最少需要进行多少次交换才能完成这个目标?

$\large{数据范围}$

- $1 \leq T \leq 10^3$
- $2 \leq n \leq 10^3$
- $1 \leq a_i \leq n$,数据保证 $a$ 数组是 $n$ 的全排列
- $n$ 的全排列:$1, 2, 3, \dots, n$中每个值都只出现一次。

输入格式

第一行输入一个整数 $T$,代表测试用例个数。

对于每一个测试用例:

第一行输入一个整数 $n$。

第二行输入 $n$ 个数,代表 $a_i$。

输出格式

对于每一个测试用例: 输出一个答案占一行。

输入输出样例

输入 #1
2
2
1 2
2
2 1
输出 #1
1
0
C++ 编辑器
输入
输出