페이지를 불러오는 중…
해결한 사람
1
명
정답률
100.00
%
시간 제한
1000
ms
메모리 제한
2048
MB
수천개의 섬은 자바 해역에 위치한 아름다운 섬들의 그룹이다. 수천개의 섬은 개의 섬으로 구성되며 부터 까지 번호가 붙어 있다.
섬들 사이를 오가는 데 사용될 수 있는 카누가 개 있고 부터 까지 번호가 붙어 있다. 인 각 에 대해 번 카누는 섬 나 섬 에 정박할 수 있고, 와 사이를 운항하는 데 사용할 수 있다. 특별히 카누가 섬 에 정박해 있을 때에는 섬 에서 섬 로 운항할 수 있고, 이후 섬 에 정박하게 된다. 비슷하게 카누가 섬 에 정박해 있을 때에는 섬 에서 섬 로 운항할 수 있고, 이후 섬 에 정박하게 된다. 처음에 카누는 섬 에 정박해 있다. 여러 카누가 동일한 두 섬 사이를 오가는 것도 가능하다. 한 섬에 여러 카누가 정박하는 것도 가능하다.
안전상의 이유로 카누는 매 운항 이후 유지보수가 필요하고, 이로 인해 같은 카누가 두 번 연속해서 운항하는 것을 금지한다. 즉, 번 카누가 사용된 후에는 번 카누가 다시 사용되기 전에 다른 카누가 반드시 사용되어야 한다.
부 뎅클렉은 몇 개의 섬을 여행할 계획을 세우려고 한다. 그녀의 여행이 유효하다는 것은 다음 조건들이 만족됨을 의미한다.
당신은 부 뎅클렉이 최대 번 운항하는 유효한 여행을 찾도록 도와주거나, 그러한 유효한 여행이 없음을 결정하도록 도와야 한다. 이 문제에서 제시하는 제약 조건 (Constraints 부분 참고)하에서는 만약 유효한 여행이 존재한다면 운항 횟수가 번을 넘지 않는 유효한 여행이 존재함을 증명할 수 있다.
다음 함수를 구현해야 한다.
union(bool, int[]) find_journey(int N, int M, int[] U, int[] V)
bool 또는 정수 배열을 리턴해야 한다.
false를 리턴한다.true를 리턴하거나, 개보다 많은 정수 값을 갖는 배열을 리턴하거나, 또는 유효한 여행을 나타내지 않는 정수 배열을 리턴해야 한다 (더 자세한 내용은 Subtasks 부분 참고).다음 호출을 생각해보자.
find_journey(4, 5, [0, 1, 2, 0, 3], [1, 2, 3, 3, 1])
섬들과 카누들은 아래 그림과 같다.

유효한 여행으로 가능한 한 가지는 다음과 같다. 부 뎅클렉은 처음에 , , , 번 카누를 순서대로 운항한다. 그 결과 그녀는 섬 에 있게 된다. 그 다음 현재 섬 에 정박해 있고 마지막에 사용한 카누가 아닌 번 카누를 부 뎅클렉은 운항할 수 있다. 번 카누를 다시 운항하면 부 뎅클렉은 이제 섬 에 있게 된다. 하지만 , , 번 카누가 여행 이전과 같은 섬에 정박해 있지 않다. 부 뎅클렉은 여행을 계속 이어서 , , , , 번 카누를 운항한다. 부 뎅클렉은 섬 으로 돌아오고 모든 카누들도 여행 전과 동일한 섬에 정박해 있다.
따라서 리턴 값 은 유효한 여행을 나타낸다.
다음 호출을 생각해보자.
find_journey(2, 3, [0, 1, 1], [1, 0, 0])
섬들과 카누들은 아래 그림과 같다.

부 뎅클렉은 번 카누를 운항해야만 하고, 그 다음 그녀는 또는 번 카누를 운항할 수 있다. 참고로 그녀는 번 카누를 연속해서 운항할 수 없다. 어느 경우든지 부 뎅클렉은 섬 으로 돌아간다. 하지만 카누들은 여행 전과 같은 섬에 정박해 있지 않고, 섬 에 정박한 유일한 카누는 방금 그녀가 사용한 카누라서 부 뎅클렉은 더 이상 운항할 수 있는 카누가 없다. 유효한 여행이 없으므로 이 함수는 false를 리턴해야 한다.
유효한 여행이 존재하는 각 테스트 케이스에 대해 당신의 답은
true를 리턴하거나, 개보다 많은 정수 값을 갖는 배열을 리턴하거나, 또는 유효한 여행을 나타내지 않는 정수 배열을 리턴한 경우 의 점수를 받고,유효한 여행이 존재하지 않는 각 테스트 케이스에 대해 당신의 답은
false를 리턴한 경우 만점을 받고,참고로 각 서브태스크의 최종 점수는 그 서브태스크의 테스트 케이스들의 최소 점수로 정해진다.
샘플 그레이더는 다음 형식으로 답을 출력한다.
find_journey가 bool을 리턴한다면:
find_journey가 false를 리턴한 경우 , 그 외의 경우 find_journey가 int[]를 리턴한다면 배열의 원소를 로 두면:
4 5
0 1
1 2
2 3
0 3
3 1
1
10
0 1 2 4 0 3 2 1 4 3
2 3
0 1
1 0
1 0
0
0
샘플 그레이더의 입력 형식은 다음과 같다.
International Olympiad in Informatics (IOI) 2022, official task package and official Korean statement.
Reporch에서 한국어 번역, 수식 표기, 이미지 호스팅 및 형식을 수정했습니다.
로그인 상태를 확인하는 중입니다.