RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
KOI00026

색깔 모으기

Platinum IV 플래티넘 IV
난이도
2s
시간 제한
1024MB
메모리 제한
5
맞았습니다!!
6
제출 수
83.3%
정답률
레이팅

의견: 0

설명

\(2N\)개의 공과 \(N+1\)개의 상자가 있다. 공들의 색깔은 \(1, 2, \cdots, N\) 중 하나이며, 각 색깔에 대해 그 색깔로 칠해진 공은 정확히 \(2\)개 있다. 각 상자는 공을 최대 \(2\)개까지 가지고 있을 수 있다. 처음에는 첫 번째 상자부터 \(N\)번째 상자에 각각 \(2\)개의 공이 들어 있고, \(N+1\)번째 상자는 비어 있다. \(i\)번째 상자의 위에 있는 공의 색깔은 \(A_i\)이고, 아래에 있는 공의 색깔은 \(B_i\)이다.

한 상자에서 다른 상자로 공을 옮길 수 있는데, 상자의 가장 위에 있는 공을 빼서 다른 상자의 가장 위에 넣는 작업을 할 수 있다.

여러분은 같은 색으로 칠해진 \(2\)개의 공이 같은 상자에 들어가도록 공을 옮겨야 한다. 이때, 공을 옮기는 작업을 할 때마다 다음 두 조건 중 하나를 만족해야 한다.

  • 옮겨서 공을 놓으려는 상자가 완전히 비어 있어야 한다.
  • 옮겨서 공을 놓으려는 상자에 공이 정확히 하나 들어 있고, 이동하려는 공과 해당 상자에 있는 공의 색깔이 같아야 한다.

색깔이 같은 공이 같은 상자에 들어가도록 하기 위해 필요한 공의 이동 횟수의 최솟값을 구하는 프로그램을 작성하라.

예를 들어, 위 그림에서 아래와 같이 공을 옮기면 \(6\)번의 이동으로 색깔이 같은 공이 같은 상자에 들어가게 되고, 공을 \(6\)번보다 적게 옮겨서 목표를 달성하는 것은 불가능하다.

  • 네 번째 상자의 색깔이 \(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\)와 같다.
입력 형식

첫 번째 줄에 \(N\)이 주어진다.

두 번째 줄부터 \(N\)개의 줄에 걸쳐 각 상자에 들어 있는 두 공들의 색깔이 주어진다. \(N\)개의 줄 중 \(i\)번째 줄에는 \(A_i, B_i\)가 공백으로 구분되어 주어진다.

출력 형식

첫 번째 줄에 색깔이 같은 공이 같은 상자에 들어가도록 하기 위해 필요한 공의 이동 횟수의 최솟값을 출력한다.

단, 불가능하다면 \(-1\)을 출력한다.

서브태스크
서브태스크점수설명

1

2점

\(N \le 2\).

2

23점

\(N \le 20\).

3

15점

색이 같은 공이 같은 상자에 들어가도록 공을 옮기는 방법이 존재한다.

4

15점

\(N \le 2\,000\).

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
문제 정보

riseoj 작성

출처 올림피아드 > 한국정보올림피아드 > KOI 2024 > 2차 대회 > 초등부 3번 / 중등부 2번

평가 및 의견

색깔 모으기

개요
출제자 난이도 Platinum IV 플래티넘 IV 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

색깔 모으기

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8