모빌

면접 대비

시간 제한1초메모리 제한128 MB

요약
모빌의 팔 구조와 회전축 거리가 주어질 때, 지정된 무게가 w 이상이면서 모든 팔이 균형을 이루도록 각 추의 최소 정수 무게를 구한다.
난이도

보통10점 중 6점

유형
트리, 수학, 정수론, DFS
정답자
아직 제출이 없습니다

문제

천장에 매달린 모빌을 생각한다. 모빌은 하나의 줄로 천장에 매달려 있고, 그 줄은 막대(arm)의 한 지점인 받침점(pivot)에 연결된다. 막대의 양 끝에는 각각 또 다른 막대를 매단 줄이 있거나, 추(weight)가 달려 있다.

모빌은 균형을 이루어야 한다. 어떤 막대의 받침점에서 왼쪽 끝까지의 거리를 dLd_L, 오른쪽 끝까지의 거리를 dRd_R이라 하면, 이 막대는 다음 조건을 만족할 때 균형을 이룬다.

WL×dL=WR×dRW_L \times d_L = W_R \times d_R

여기서 WLW_L은 왼쪽 끝에 매달린 전체 무게, WRW_R은 오른쪽 끝에 매달린 전체 무게이다. 막대와 줄 자체의 무게는 무시한다.

예를 들어 어떤 모빌에서 1번 추의 무게가 8이면 2, 3, 4, 5번 추의 무게는 각각 2, 6, 4, 4가 되어야 한다. 이처럼 모빌의 구조(막대들의 배치와 각 막대에서 받침점의 위치)와 추 하나의 무게를 알면 모든 추의 무게가 결정된다.

여기에 한 가지 조건이 더 있다. 모든 추의 무게는 정수여야 한다. 따라서 추 하나에 대해 원하는 최소 무게가 주어지면, 나머지 추들의 무게도 모두 정수가 되도록 값을 정해야 한다. 이때 지정된 추의 무게를 그 최소값보다 조금 크게 올려야 할 수도 있다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 막대의 개수를 나타내는 양의 정수 nn이 적힌 줄로 시작한다. 막대에는 1번부터 nn번까지 번호가 매겨진다.

이어지는 nn개의 줄은 1번부터 nn번까지 순서대로 각 막대를 다음 형식으로 설명한다.

dL dR typeL typeR nL nR
  • dLd_L, dRd_R: 받침점에서 왼쪽 끝, 오른쪽 끝까지의 거리(각각 20 이하의 정수)
  • typeLtypeL, typeRtypeR: 해당 끝에 추가 매달려 있으면 W, 막대가 매달려 있으면 A
  • nLn_L, nRn_R: 왼쪽 끝, 오른쪽 끝에 매달린 추 또는 막대의 번호

추의 번호는 1번부터 시작하며 연속적이다. 어떤 막대도 맨 위에서 6단계보다 더 아래에 매달리지 않는다.

막대 설명 다음에는 m w 형식의 줄이 오며, 이는 mm번 추의 무게가 최소 ww임을 뜻한다(1≤w≤201 \le w \le 20).

마지막 테스트 케이스 다음에는 00만 적힌 줄이 온다.

출력

각 테스트 케이스마다 mm번 추의 무게가 최소 ww일 때 모빌 전체의 최소 무게를 한 줄에 출력한다. 각 답은 Case k: x 형식으로 출력하며, kk는 1부터 시작하는 테스트 케이스 번호, xx는 최소 무게이다. 모든 출력값은 10910^9 미만이라고 가정해도 된다.

예제2

  1. 예제 1

    입력
    4
    3 1 W W 2 3
    4 2 W A 1 3
    2 2 A A 1 4
    1 1 W W 4 5
    1 8
    4
    2 2 A W 2 5
    3 1 W A 4 3
    4 1 W A 3 4
    2 1 W W 1 2
    3 20
    0
    
    예상 출력
    Case 1: 24
    Case 2: 280
    
  2. 예제 2

    입력
    1
    2 1 W W 1 2
    1 1
    1
    1 1 W W 1 2
    2 3
    0
    
    예상 출력
    Case 1: 3
    Case 2: 6