问题 7199 --后夜祭的舞蹈(dance)

7199: 后夜祭的舞蹈(dance)

时间限制: 1 Sec  内存限制: 512 MB
提交: 3  解决: 3
[提交][状态][命题人:]

题目描述

在活动最后一天的晚上,有 n 个人围成若干舞蹈圈跳舞,每个人的编号分别从 1 到 n 。每个圈内至少有 2 个人,每个人恰好左右各有 2 名相邻的舞伴。特别的,如果一个圈内只有 2 个人在跳舞,则圈内每个人的左右舞伴都是另一个人。

晚会结束后的第二天,作为活动的组织者,你想知道共有多少个舞蹈圈。但每个人只记得一位相邻的舞伴。你需要依据这些信息,推算出可能的舞蹈圈的最小数量和最大数量。

输入

第一行包含一个正整数 T (1≤T≤10^4) ,表示数据组数。
每组数据包含两行,其中第一行包含一个正整数 n (2≤n≤2·10^5) ,表示参加舞蹈的人数。
每组数据第二行包含 n 个整数 a[1],a[2],...,a[n] (1≤a[i]≤n, a[i]≠i) ,其中 a[i] 表示第 i 个人所记住的相邻舞伴的编号。

保证测试数据正确,且至少对应一次人群的舞蹈圈划分。
保证所有 n 之和不超过 2·10^5 。

输出

对于每组数据输出一行,包含两个整数,分别表示可能的舞蹈圈的最小数量和最大数量。
样例输入
Copy
10
6
2 1 4 3 6 5
6
2 3 1 5 6 4
9
2 3 2 5 6 5 8 9 8
2
2 1
4
4 3 2 1
5
2 3 4 5 1
6
5 3 4 1 1 2
5
3 5 4 1 2
6
6 3 2 5 4 3
6
5 1 4 3 4 2
样例输出
Copy
1 3
2 2
1 3
1 1
1 2
1 1
1 1
2 2
1 2
1 1

提示

样例解释
在第一组样例中,最少可以组成一个舞蹈圈:
1-2-3-4-5-6-1
最多可以组成三个舞蹈圈:
1-2-1
3-4-3
5-6-5

数据范围
对于10%的数据, n≤10, T≤10^2 ;
对于30%的数据, n≤10^2, T≤10^2 ;
对于50%的数据, n≤10^3, T≤10^3 ;
对于另外10%的数据,T=10^4 ;
对于另外20%的数据,T=1 ;
对于100%的数据, n≤2·10^5, T≤10^4 ;

来源

[提交][状态]