아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

모빌

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

요약
한 물체의 무게만 미지수인 모빌 트리가 주어질 때 모든 막대가 균형을 이루는 무게를 구하고, 막대들이 회전할 때 서로 충돌하지 않는지 판정한다.
난이도

보통10점 중 7점

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

문제

Alabama Mobiles Inc.는 가볍고 움직이는 조형물인 모빌을 설계하고 제작한다. 모빌은 막대의 중심에 실을 묶어 매단 구조이며, 막대의 양 끝에는 각각 또 다른 실이 매달려 작은 장식물 하나 또는 더 작은 모빌을 지탱한다.

잘 설계된 모빌은 균형이 맞아야 한다. 즉 모든 막대가 자연스럽게 수평으로 매달리도록 막대 양쪽 끝에 걸린 무게가 같아야 한다. 모든 막대는 중심에 실이 묶여 있으므로, 어떤 막대는 그 왼쪽 끝에 매달린 전체 무게와 오른쪽 끝에 매달린 전체 무게가 같을 때 정확히 균형을 이룬다. 또한 각 막대가 자신을 지탱하는 실을 축으로 회전하더라도 다른 막대와 부딪히지 않도록 막대들의 길이를 정해야 한다.

모빌의 일부 설계도가 주어질 때, 이 모빌이 균형을 이룰 수 있는지, 그리고 균형을 이룬다면 막대들이 서로 부딪히지 않고 자유롭게 회전할 수 있는지 판정하는 프로그램을 작성하라.

막대와 실의 무게는 장식물의 무게에 비해 무시할 수 있고, 모든 연결 실의 길이는 같다고 가정한다. 모든 모빌에는 막대가 적어도 하나 있다.

입력

입력은 하나 이상의 모빌 설계 명세로 이루어진다. 한 명세 안에서 원소들은 1번부터 시작하여 1씩 증가하는 번호로 매겨진다.

각 원소는 한 줄에 하나씩 주어진다. 줄은 원소 번호로 시작하고, 이어서 막대를 뜻하는 문자 B 또는 장식물을 뜻하는 문자 D가 온다.

  • 막대(B)인 경우: 문자 B 다음에 막대의 길이를 나타내는 실수 하나가 오고, 이어서 막대의 두 끝에 매달린 원소들의 번호를 나타내는 정수 두 개가 온다. 가장 위의 막대를 제외한 모든 원소는 정확히 하나의 막대 끝에 매달린 것으로 나열된다.
  • 장식물(D)인 경우: 문자 D 다음에 그 무게를 나타내는 실수 하나가 오거나, 무게가 아직 정해지지 않았음을 뜻하는 문자 X가 온다. 각 명세에는 X 원소가 정확히 하나 있다.

한 줄 안의 항목들은 하나 이상의 공백으로 구분된다.

명세는 원소 번호 자리에 양수가 아닌 값이 오는 줄로 끝난다. 값이 0이면 현재 명세가 끝나고 뒤에 명세가 더 있음을 뜻하며, 음수이면 현재 명세가 끝나면서 입력 전체가 끝난다.

출력

각 모빌에 대해 한 줄 또는 두 줄을 출력한다.

첫 번째 줄은 다음 중 하나이다.

Object M must have weight NN

또는

The mobile cannot be balanced.

여기서 M은 X 원소의 번호이고, NN은 모빌 전체를 균형 잡히게 하는 무게로 소수점 아래 두 자리까지 출력한다. 어떤 양수 무게로도 모빌의 균형을 맞출 수 없을 때에만 두 번째 형태를 출력한다.

모빌의 균형을 맞출 수 있으면 두 번째 줄로 다음 중 하나를 출력한다.

The mobile will swing freely.

또는

The mobile will not swing freely.

이는 막대들이 실을 축으로 어떻게 회전하더라도 모든 막대 쌍이 양의 거리만큼 떨어져 있는지 여부에 따라 결정된다.

예제3

  1. 예제 1

    입력
    1 B 4.0 2 5
    2 D 6.0
    3 D X
    4 D 3.0
    5 B 3.0 3 4
    -1
    
    예상 출력
    Object 3 must have weight 3.00
    The mobile will swing freely.
    
  2. 예제 2

    입력
    1 B 2.0 2 3
    2 D 5.0
    3 D X
    -1
    
    예상 출력
    Object 3 must have weight 5.00
    The mobile will swing freely.
    
  3. 예제 3

    입력
    1 B 2.0 2 3
    2 B 2.0 4 5
    3 D 10.0
    4 D X
    5 D 3.0
    -1
    
    예상 출력
    The mobile cannot be balanced.