有n台电脑排成一行,从1号到n号进行编号;机器人Dick需要从每台电脑中收集信息,要打开第i台电脑,需要打开ai台其他的电脑;现在帮助Dick设计一条打开电脑的顺序,使得Dick转弯的次数最少。
输入格式
第一行为正整数t(≤10),表示数据组数;每组数据中,第一行为正整数n(≤1000),表示电脑数;第二行为以空格隔开的n个整数ai(0≤ai<n),意义如题目描述。
输出格式
对于每组数据,输出Dick的最少转弯数。假定所有数据确保Dick能够完成任务。
输入/输出例子1
输入:
3
3
0 2 0
5
4 2 3 0 1
7
0 3 1 0 5 2 6
输出:
1
3
2
样例解释
样例1中,开机顺序为:1->3->2;样例2中,开机顺序为:4->5->2->3->1;样例3中,开机顺序为1->3->4->6->2->5->7。
Code
#include<bits/stdc++.h>
using namespace std;
int t,n,a[1001],w[1001],ans,lr,sum;
int main( ) {
scan