문제
한 상자에서 다른 상자로 공을 옮길 수 있는데, 상자의 가장 위에 있는 공을 빼서 다른 상자의 가장 위에 넣는 작업을 할 수 있다.
여러분은 같은 색으로 칠해진
옮겨서 공을 놓으려는 상자가 완전히 비어 있어야 한다.
옮겨서 공을 놓으려는 상자에 공이 정확히 하나 들어 있고, 이동하려는 공과 해당 상자에 있는 공의 색깔이 같아야 한다.
색깔이 같은 공이 같은 상자에 들어가도록 하기 위해 필요한 공의 이동 횟수의 최솟값을 구하는 프로그램을 작성하라.
예를 들어, 위 그림에서 아래와 같이 공을 옮기면
네 번째 상자의 색깔이
3 인 공을 여섯 번째 상자로 옮긴다.세 번째 상자의 색깔이
2 인 공을 네 번째 상자로 옮긴다.첫 번째 상자의 색깔이
4 인 공을 세 번째 상자로 옮긴다.두 번째 상자의 색깔이
3 인 공을 여섯 번째 상자로 옮긴다.다섯 번째 상자의 색깔이
5 인 공을 두 번째 상자로 옮긴다.다섯 번째 상자의 색깔이
1 인 공을 첫 번째 상자로 옮긴다.
제약조건
주어진 모든 수는 정수이다.
1 \le N \le 200,000 1 \le A_i, B_i \le N 각
i (1 \le i \le N )에 대해서A_1, A_2, \cdots, A_N, B_1, B_2, \cdots, B_N 중 정확히2 개의 값이i 와 같다.
입력
첫 번째 줄에
두 번째 줄부터
출력
첫 번째 줄에 색깔이 같은 공이 같은 상자에 들어가도록 하기 위해 필요한 공의 이동 횟수의 최솟값을 출력한다.
단, 불가능하다면
부분문제
번호 | 점수 | 조건 |
---|---|---|
#1 | 2점 | |
#2 | 23점 | |
#3 | 15점 | 색이 같은 공이 같은 상자에 들어가도록 공을 옮기는 방법이 존재한다. |
#4 | 15점 | |
#5 | 45점 | 추가 제약 조건 없음. |
예제1
5
4 1
3 5
2 4
3 2
5 1
6
예제2
2
1 1
2 2
0
예제3
4
2 1
3 1
2 4
3 4
-1