페이지를 불러오는 중…
해결한 사람
1
명
정답률
100.00
%
시간 제한
2000
ms
메모리 제한
1024
MB
바쿠에는 번부터 번까지 번호가 붙은 개의 관광지와 번부터 번까지 번호가 붙은 개의 양방향 도로가 있다. 각 도로는 서로 다른 두 관광지를 잇고, 도로를 따라 임의의 두 관광지 사이를 이동할 수 있다.
파티마는 관광지를 사흘에 걸쳐 모두 방문하려 한다. 첫째 날에는 개, 둘째 날에는 개, 셋째 날에는 개를 방문하기 위해 관광지를 크기가 각각 , , 인 세 집합 , , 로 나눈다. 각 관광지는 정확히 한 집합에 속하며 이다.
집합 안의 임의의 두 관광지 사이를 밖의 관광지를 거치지 않고 이동할 수 있으면 를 연결된 집합이라고 한다. 파티마는 , , 중 적어도 두 집합이 연결되도록 나누고 싶다. 이러한 분할을 올바른 분할이라고 한다.
올바른 분할 하나를 찾거나, 존재하지 않음을 판별하여라.
다음 함수를 구현해야 한다.
vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q)
find_split(9, 4, 2, 3, [0, 0, 0, 0, 0, 0, 1, 3, 4, 5], [1, 2, 3, 4, 6, 8, 7, 7, 5, 6])

은 가능한 답이다. 이때 , , 이며 와 가 연결되어 있다.
find_split(6, 2, 2, 2, [0, 0, 0, 0, 0], [1, 2, 3, 4, 5])

올바른 분할이 없으므로 유일한 정답은 이다.
find_split이 반환한 배열을 한 줄에 출력한다.9 10
4 2 3
0 1
0 2
0 3
0 4
0 6
0 8
1 7
3 7
4 5
5 6
1 1 3 1 2 2 3 1 3
6 5
2 2 2
0 1
0 2
0 3
0 4
0 5
0 0 0 0 0 0
International Olympiad in Informatics (IOI) 2019, official task package and official Korean statement.
Reporch에서 한국어 번역, 수식 표기, 이미지 호스팅 및 형식을 수정했습니다.
로그인 상태를 확인하는 중입니다.