- Mã:
- RoundDance
- Tên:
- Round Dance
- Dạng thi:
- acm
- Thang điểm:
- 1 điểm
- Giới hạn thời gian:
- 1 giây
- Giới hạn bộ nhớ:
- 256 MB
- Nguồn bài tập:
- Codeforces
- Link nguồn:
- https://codeforces.com/co...
- Được tạo bởi:
- 4801104016
NẮM VÒNG TAY LỚN
n bạn vừa đến sự kiện "Nắm vòng tay lớn" của trường để kiếm thêm điểm rèn luyện. Các bạn chia nhau tạo thành các vòng tròn, mỗi vòng tròn được tạo ra sẽ gồm ít nhất 2 người, và khi đó mỗi bạn sẽ nắm tay chính xác hai bạn khác. Nếu vòng tròn chỉ gồm 2 bạn thì hai bạn đó nắm tay nhau.
Vì đã dư điểm, bạn lười ko đi... nhưng vẫn tò mò muốn biết là các bạn chia làm nhiêu vòng. Sau khi hỏi từng người thì mỗi bạn cho biết chỉ nhớ đúng một người đứng kế mình. Từ dữ liệu đó, bạn hãy xác định rằng tại sự kiện, các bạn tham dự đã chia trong khoảng bao nhiêu vòng (min và max).
Ví dụ, hôm đó 6 người tham gia, và số báo danh người cạnh mà người được hỏi nhớ được lần lượt là [2,1,4,3,6,5], thì số vòng tối thiểu có thể có là 1:
-> 1-2-3-4-5-6-1
và tối đa là 3:
-> 1-2-1
-> 3-4-3
-> 5-6-5
Input:
Dòng đầu là số dương t (1 ≤ t ≤ 104) - Số lượng testcase.
Với mỗi testcase, dòng đầu là số dương n (2 ≤ n ≤ 2.105) -- số lượng người tham gia.
Dòng thứ hai chứa n số dương ai (1 ≤ t ≤ 104, ai ≠ i ) -- số báo danh của người kế bên mà bạn thứ i nhớ được.
Đầu vào được đảm bảo rằng tất cả các testcase đều đúng, tức là luôn cách chia các bạn tham gia vào thành vòng.
Cũng đảm bảo rằng tổng các số n của các testcase ko vượt quá 2.105 .
Output:
Với mỗi test case, in ra hai số -- số lượng vòng tối thiểu và tối đa có thể có.
Input
Output
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
1 3
2 2
1 3
1 1
1 2
1 1
1 1
2 2
1 2
1 1
Theme :
Mời bạn soạn code