#S02351. Z 小花的狗窝

    ID: 2351 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>浙江省第三届智力运动会编程项目传统题

Z 小花的狗窝

题目描述

Z 小花给村里的 nn 只小狗按照 1,2,3,,n1,2,3,\ldots,n 的顺序进行了编号,他为每只小狗都准备了一个温馨的狗窝,狗窝同样也按照 1,2,3,,n1,2,3,\ldots,n 的顺序进行了编号。但是村里的小狗天生倔脾气,如果编号为 ii 的小狗住在编号为 ii 的狗窝里,它就会不高兴!出于无奈,Z 小花只好给某些不高兴的小狗交换狗窝。他想知道,最少要交换几次,才能使所有的狗都不会不高兴。

输入格式

第 1 行输入一个整数 TT,表示共 TT 组数据。
每组数据包含两行,第一行为一个整数 nn,表示有 nn 只小狗和狗窝。
第二行有 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n,为 1n1\sim n 的某种排列,表示 ii 号小狗住在 aia_i 号狗窝中。

输出格式

一共 TT 行,每行一个整数,表示最少的交换次数。

5
2
2 1
3
1 2 3
5
1 2 5 4 3
4
1 2 4 3
10
10 2 1 3 6 5 4 7 9 8
0
2
2
1
1

数据范围

1T10001 \le T \le 10001n1051 \le n \le 10^5