有 $$$n$$$ 座城市,分别编号为 $$$1, 2, \dots, n$$$,每座城市持有一台传送到其他城市的折跃门。每台折跃门只能传送到指定编号的城市,且每座城市只能被一台折跃门传送到。给定数组 $$$a$$$,其中 $$$a_i$$$ 表示第 $$$i$$$ 座城市持有的折跃门可以传送到第 $$$a_i$$$ 座城市。
为了加快城市之间的交通速度,市长们委托小 P 为他们进行折跃门的调整,使得从任意一座城市出发,都可以通过折跃门到达任意一座城市。
小 P 可以任意交换两座城市持有的折跃门,他希望知道最少需要交换多少次,才能使得从任意一座城市出发,都可以通过折跃门到达任意一座城市。
第一行一个整数 $$$T$$$ ($$$1 \le T \le 10^4$$$),表示测试用例数。
对于每个测试用例:
第一行一个整数 $$$n$$$ ($$$1 \le n \le 10^5$$$),表示城市的数量。
第二行共 $$$n$$$ 个整数 $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le n$$$),表示第 $$$i$$$ 座城市持有的折跃门可以传送到第 $$$a_i$$$ 座城市。
保证所有测试用例的 $$$n$$$ 之和不超过 $$$10^5$$$。
对于每个测试用例,输出一行一个整数,表示最少需要交换多少次,才能使得从任意一座城市出发,都可以通过折跃门到达任意一座城市。
51121 231 3 241 3 2 453 4 5 2 1
0 1 1 2 1
对于第一组测试用例:显然只有一座城市,不需要交换折跃门,因此答案为 $$$0$$$。
对于第三组测试用例:只需交换城市 1 与其它城市中任意一个折跃门即可使任意两座城市互通,因此答案为 $$$1$$$。