Processing math: 100%
编程题
                ### 问题描述

有一个排列 p ,现在小 L 可以不断地交换排列中的两个数,小 L 想让这个排列变成一个单排列,但他不会求最少的操作次数,你可以帮帮他吗?

注意:单位排列指对于任意的 i(1in) ,满足 pi=i 的排列。

输入格式

第一行一个正整数T,表示测试点数目。

对于每一个测试点,第一行一个数 n ,表示排列长度。

接下来一行 n 个数 pi ,表示排列。

输出格式

对于每一个测试点,输出一行一个数,表示最少的交换次数。

样例输入

5
3 4 2 5 1

样例输出

4

说明

一种可行的交换4次的方案为:

$34251 \rightarrow 14253 \rightarrow 12453 \rightarrow 12354 \rightarrow 12345$

评测数据规模

对于 50% 的数据,满足 n5

对于 80% 的数据,满足n1000

对于 100% 的数据,满足 1n1000001T5

查看答案
赣ICP备20007335号-2