kipa00   2년 전

option 1:

2번 조건의 "최단 시간의 합이 최소"가 되는 조건이 1번 조건을 만족하지 않는 정점을 포함하는지가 불분명합니다. 2번을 다음과 같이 바꾸어 주세요.

성품도 훌륭한 지헌이는, 새로운 약속 장소는 1번 조건을 만족하지 않는 장소를 제외하고 지헌이가 걸리는 최단 시간과 성하가 걸리는 최단 시간의 합이 최소가 되는 지점 중 하나가 되도록 하고 싶다. 이때 지헌이 혹은 성하가 이동할 수 없는 정점은 제외한다.

이렇게 하면, 2번 조건에서 "1번 조건을 만족하지 않는 장소를 제외하고" 조건을 통과하는 정점이 하나도 없는 경우가 있을 수 있고, 이 경우 "지헌이가 걸리는 최단 시간과 성하가 걸리는 최단 시간의 합이 최소가 되는 지점"이 어색한 표현이 될 수 있습니다. 따라서 출력에 다음과 같은 조건을 추가해 주세요.

만약 조건을 만족하는 약속 장소가 없거나, 지헌이나 성하가 지헌이의 시작 지점과 성하의 시작 지점 이외의 정점 중 어느 것에도 도달할 수 없다면 -1을 출력하라.

option 2:

개인적으로는 문제의 조건이 수식으로 쓰이는 것이 더 깔끔하게 느껴집니다.

스트레스가 심해진 지헌이는 성하와의 약속 장소를 바꾸려고 한다. 그 위치를 정하기 위해서, 먼저 모든 정점을 새로운 약속 장소의 후보로 넣은 뒤 다음과 같은 순서로 각 정점이 후보에서 제거된다. 장소의 번호는 1부터 차례대로 붙어 있다.
  1. 지헌이의 출발 위치와 성하의 출발 위치를 후보에서 제거한다. 지헌이 혹은 성하가 도달할 수 없는 정점도 제거한다.
  2. f(V) = dist(J, V) + dist(S, V)라 하자. 여기서 J는 지헌이의 출발 위치, S는 성하의 출발 위치이고, dist(A, B)는 A에서 B까지의 최단 거리이다(도달 불가능하다면 정의되지 않는다). 후보에 남은 정점이 없다면 곧바로 종료한다. 남은 정점이 있다면, minV f(V)를 D라 하자. 모든 후보 V에 대해 f(V)가 D와 일치하지 않는 정점 V를 후보에서 모두 제거한다.
  3. 후보에 남은 정점이 없다면 곧바로 종료한다. 남은 정점이 있다면, dist(J, V) > dist(S, V)인 정점 V를 후보에서 모두 제거한다.
  4. 후보에 남은 정점이 없다면 곧바로 종료한다. 남은 정점이 있다면, minV dist(J, V)를 T라 하자. 모든 후보 V에 대해 dist(J, V)가 T와 일치하지 않는 정점 V를 후보에서 모두 제거한다.
후보가 남아 있다면, 남은 후보 중 정점 번호가 가장 작은 정점이 최종 약속 장소가 된다. (그림) ...

빨간색으로 표시한 문장은 아래 세 번째 dot에서 데이터를 추가하는 선택을 했을 때만 써 주세요. 디스크립션을 어떻게 바꿀지는 출제자 분이 결정해 주셔야 할 거 같습니다. @hahawjstk

또한,

  • 현재 문제 어디에도 J와 S가 다르다는 말이 없습니다. assert를 걸어 봤을 때 실제로 다르다는 것을 확인했습니다. 따라서 입력 란에 굵게 표시된 내용을 (볼드 없이) 추가해 주세요.
    그리고 그 다음 줄에는 지헌이의 위치 J 와 성하의 위치 S 가 주어진다. (1 ≤ J, S ≤ V) JS는 다르다.
  • 현재 문제 어디에도 self-loop이 주어지지 않는다는 말이 없습니다. assert를 걸어 봤을 때 실제로 self-loop은 주어지지 않는다는 것을 확인했습니다. 따라서 입력 란에 굵게 표시된 내용을 (볼드 없이) 추가해 주세요.
    (1 ≤ a, b ≤ V, c는 10,000이하의 자연수, 길은 양방향이ab는 다르다)
  • 현재 문제 어디에도 전체 그래프가 연결되어 있다는 말이 없습니다. 이건 논란의 여지가 좀 있는 거 같습니다. 이 글에서 이미 데이터가 추가되어야 할 수 있다고 논의된 바가 있습니다. 만일 데이터를 추가한다면, 아래 데이터가 이 코드가 틀린 답을 내어 놓는 데이터이니 같이 추가해 주시면 좋겠습니다. 지문을 수정한다면 입력의 맨 아래
    지현이와 성하가 항상 만날 수 있는 입력만 주어진다.
    를 다음 문장으로 교체해 주세요.
    그래프를 만들었을 때 항상 연결 그래프인 경우만 입력으로 주어진다.
    어떤 선택을 할지 출제자 분이 결정해 주셔야 할 거 같습니다. @hahawjstk

댓글을 작성하려면 로그인해야 합니다.