페이지를 불러오는 중…
해결한 사람
3
명
정답률
100.00
%
시간 제한
1000
ms
메모리 제한
2048
MB
볼리비아 고고학자인 Mr. Pacha는 티와나쿠 시대(300-1000 CE)의 세계를 설명하는 고대 문서를 발견했다. 티와나쿠 시대에는 개의 국가가 있었고 이 국가들은 번부터 번까지로 구분된다.
이 문서에는 인접 국가를 나타내는 개의 서로 다른 쌍이 적힌 하나의 목록이 있다: 각 ()에 대해, 이 문서는 국가 와 국가 가 서로 인접했다고 기술하고 있다. 이 목록에 포함되지 않은 국가들의 쌍은 서로 인접하지 않았다.
Mr. Pacha는 티와나쿠 시대의 국가들 사이의 인접성을 정확히 나타내는 세계 지도를 만들고 싶다. 이를 위해, 그는 먼저 양의 정수 를 선택한다. 그 다음, 개의 정사각형 셀들의 격자로 지도를 그리는데, 이때 행 번호는 부터 까지(위에서 아래로)이고 그리고 열 번호는 부터 까지(왼쪽에서 오른쪽으로)이다.
그는 지도의 각 셀을 개의 색 중 하나로 칠하고 싶다. 이 색들은 부터 까지 번호가 붙어있고, 국가 ()는 색 로 표현된다. 색칠은 다음 조건들을 모두 만족해야 한다:
예를 들어, 만약 , 이고 인접 국가들의 쌍이 와 이라면, 쌍 은 서로 인접하지 않았고, 크기 인 다음 지도는 모든 조건을 만족한다.

특히, 한 국가가 지도에서 연결된 영역 형태일 필요는 없다. 위의 지도에서, 국가 3은 하나의 연결된 영역 형태이지만 국가 1과 2는 끊어진 영역 형태이다.
당신은 Mr. Pacha가 값을 선택하고 지도를 만드는 것을 도와야 한다. 고대 문서는 지도가 존재함을 보장한다. Mr. Pacha는 더 작은 지도를 선호하기에, 마지막 서브태스크에서 당신의 점수는 값에 의존하고, 더 작은 값은 더 좋은 점수를 얻게 한다. 하지만, 가능한 최솟값 를 찾을 필요는 없다.
다음 함수를 구현해야 한다.
std::vector<std::vector<int>> create_map(int N, int M,
std::vector<int> A, std::vector<int> B)
이 함수는 지도를 나타내는 배열 를 리턴해야 한다. 를 의 길이로 두자.
| Subtask | Score | Additional Constraints |
|---|---|---|
| 1 | (각 에 대해) | |
| 2 | ||
| 3 | ||
| 4 | 국가 은 다른 모든 국가와 인접하다. 다른 국가 쌍도 인접할 수 있다. | |
| 5 | ||
| 6 | 추가적인 제한이 없다. |
서브태스크 6에서, 당신의 점수는 값에 의존한다.
create_map이 리턴하는 어떤 지도가 모든 조건을 만족하지 못한다면, 이 서브태스크에서 당신의 점수는 이 될 것이다.create_map 호출에서 의 최댓값을 로 두자. 그러면 당신은 다음 표에 따라 부분 점수를 받는다:| Limits | Score |
|---|---|
CMS에서, 다음 두 시나리오를 모두 포함하는 테스트 케이스가 있다.
다음 호출을 생각해보자:
create_map(3, 2, [1, 2], [2, 3])
이것은 문제 설명에 있던 예로, 함수는 다음 지도를 리턴할 수 있다.
[
[2, 3, 3],
[2, 3, 2],
[1, 2, 1]
]
다음 호출을 생각해보자:
create_map(4, 4, [1, 1, 2, 3], [2, 3, 4, 4])
이 예에서, , 이고 인접 국가들의 쌍이 , , , 그리고 이다. 따라서, 와 은 인접하지 않다.
함수는 모든 조건을 만족하는 크기 인 다음 지도를 리턴할 수 있다.
[
[2, 1, 3, 3, 4, 3, 4],
[2, 1, 3, 3, 3, 3, 3],
[2, 1, 1, 1, 3, 4, 4],
[2, 2, 2, 1, 3, 4, 3],
[1, 1, 1, 2, 4, 4, 4],
[2, 2, 1, 2, 2, 4, 3],
[2, 2, 1, 2, 2, 4, 4]
]
지도는 더 작을 수 있다; 예를 들어, 함수는 크기 인 다음 지도를 리턴할 수 있다.
[
[3, 1],
[4, 2]
]
참고로 두 지도 모두 를 만족한다.
N M
A[0] B[0]
:
A[M-1] B[M-1]
P
Q[0] Q[1] ... Q[P-1]
C[0][0] ... C[0][Q[0]-1]
:
C[P-1][0] ... C[P-1][Q[P-1]-1]
여기에서, 는 create_map이 리턴하는 배열 의 길이이고,
()는 의 길이이다.
참고로 출력 형식의 line 3은 의도적으로 빈 줄로 남겨둔다.
2
3 2
1 2
2 3
4 4
1 2
1 3
2 4
3 4
3
3 3 3
2 3 3
2 3 2
1 2 1
2
2 2
3 1
4 2
입력의 첫 줄은 하나의 정수 로, 이는 시나리오의 개수이다. 개의 시나리오에 대한 내용이 이어서 나오는데, 각 시나리오의 형식은 아래와 같다.
International Olympiad in Informatics (IOI) 2025, official task package and official Korean translation.
Reporch에서 한국어 번역, 수식 표기, 이미지 호스팅 및 형식을 수정했습니다.
로그인 상태를 확인하는 중입니다.