求助 有一个排列 ? p,现在小 ? L可以不断地交换排列中的两个数,小 ? L想让这个排列变成一个单位排列,但他不会求最少的操作次数,你可以帮帮他吗? 注意:单位排列指对于任意的 ? ( 1 ≤ ? ≤ ? ) i(1≤i≤n),满足 ? ? = ? p i =i的排列。 【输入格式】 输入文件名为permutation.in。 第一行一个正整数 ? T,表示测试点数目。 对于每一个测试点,第一行一个数 ? n,表示排列长度。 接下来一行 ? n个数 ? ? p i ,表示排列。 输入文件名为permutation.in。 第一行一个正整数 ? T,表示测试点数目。 对于每一个测试点,第一行一个数 ? n,表示排列长度。 接下来一行 ? n个数 ? ? p i ,表示排列。 【输出格式】 输出文件名为permutation.out。 对于每一个测试点,输出一行一个数,表示最少的交换次数。 输入数据 1 1 5 3 4 2 5 1 输出数据 1 4 【样例解释】 一种可行的交换 4 4次的方案为: 3 4 2 5 1 → 1 4 2 5 3 → 1 2 4 5 3 → 1 2 3 5 4 → 1 2 3 4 5 3 4 2 5 1→1 4 2 5 3→1 2 4 5 3→1 2 3 5 4→1 2 3 4 5 【样例2】 见下发文件。 【数据范围】 对于 50 % 50%的数据,满足 ? ≤ 5 n≤5。 对于 80 % 80% 的数据,满足 ? ≤ 1000 n≤1000。 对于 100 % 100% 的数据,满足 1 ≤ ? ≤ 100000 , 1 ≤ ? ≤ 5 1≤n≤100000,1≤T≤5。