소 재배치
면접 대비시간 제한1초메모리 제한128 MB
현재 소 배치와 목표 배치를 비교해 길이가 1보다 큰 순환 이동의 개수와 가장 긴 길이를 구합니다.
문제
농부 존은 1번부터 번까지 번호가 붙은 소 마리()를 한 줄로 세워 두었다. 현재 번째 자리에 있는 소의 번호가 인 배열 로 순서가 주어진다. 농부 존은 사진을 찍기 위해 번째 자리에 있어야 할 소의 번호가 인 배열 로 바꾸고 싶다.
순서에서 순서로 맞추기 위해 소들은 여러 번의 순환 이동을 한다. 한 번의 순환 이동은 어떤 소가 에서 자기가 가야 할 자리로 이동하면서 그 자리에 있던 다른 소를 밀어내고, 밀려난 소도 자기 목표 자리로 이동하는 과정이 연쇄적으로 이어지다가, 처음에 움직이기 시작한 소가 처음 자리로 돌아올 때 끝난다. 소들은 모든 소가 에서의 올바른 자리에 도착할 때까지 순환 이동을 반복한다. 와 에서 같은 자리에 있는 소는 순환 이동에 참여하지 않고, 그 외의 소는 정확히 한 번의 순환 이동에 참여한다.
순환 이동의 개수와 가장 긴 순환 이동에 포함된 소의 수를 구하라.
입력
- 1행: 정수
- 2행부터 행: 부터 까지
- 행부터 행: 부터 까지
출력
- 1행: 공백으로 구분된 두 정수. 첫째는 순환 이동의 개수, 둘째는 가장 긴 순환 이동의 길이다. 순환 이동이 없으면 둘째 수는 을 출력한다.
힌트
각 자리 에서 소 는 에서 자기가 가야 할 자리로 이동한다. 이 이동 관계를 자리끼리 연결하면 여러 개의 순환이 생기며, 길이 1인 순환은 이미 제자리에 있는 소이다.