이진 모빌의 가로 폭
시간 제한1초메모리 제한256 MB
막대 길이와 구슬 무게가 주어진 이진 모빌이 토크로 균형을 이룰 때 전체 가로 너비를 계산합니다.
문제
학생 수가 줄어드는 가운데 신입생을 끌어모으려고 한 유치원이 특대형 이진 모빌 만들기에 나섰다. 모빌은 나무 막대, 구슬, 그리고 이 둘을 잇는 실로만 이루어진다.
- 유치원은 2D 나라에 있다. Z축이 없고 중력은 -Y축 방향으로 작용한다.
- 막대는 저마다 실 하나에 매달려 있다. 1번 막대를 매단 실은 천장에 붙어 있다.
- 막대의 양 끝에는 실이 하나씩 달려 있고, 그 실의 아래쪽에는 다른 막대나 구슬이 매달려 있다.
- 구슬마다 무게가 정해져 있고, 막대와 실의 무게는 0이다.
- 막대는 두께가 0인 선분이고, 구슬은 크기가 0인 질량점이다.
- 모빌이 완성되면 모든 막대는 X축과 평행하게, 즉 수평으로 놓인다.
원장 선생님은 완성한 모빌을 걸 자리를 마련해야 하는데 모빌이 얼마나 넓게 퍼질지 모른다. 막대와 구슬의 연결 상태, 각 막대의 길이, 각 구슬의 무게가 주어질 때 완성된 모빌의 가로 폭을 구하라. 가로 폭은 모빌이 닿는 X좌표의 최댓값에서 최솟값을 뺀 값이다.
입력
첫 줄에 테스트 케이스의 수 가 주어진다.
각 테스트 케이스의 첫 줄에 나무 막대의 수 ()이 주어진다. 이어지는 개의 줄 가운데 번째 줄에는 번 막대의 길이 ()과, 왼쪽 끝과 오른쪽 끝에 매달린 물체를 나타내는 두 정수 , 이 공백으로 구분되어 주어진다.
이면 왼쪽 끝에 번 막대가 매달려 있다는 뜻이고, 이면 왼쪽 끝에 무게가 인 구슬이 매달려 있다는 뜻이다. 는 오른쪽 끝을 가리킨다는 점만 다를 뿐 과 같은 방식으로 읽으면 된다.
모든 막대는 1번 막대를 뿌리로 하는 하나의 연결된 구조에 속하고, 2번부터 번까지의 막대는 각각 정확히 한 번씩 다른 막대의 끝에 매달린다.
출력
각 테스트 케이스마다 한 줄에 모빌의 가로 폭을 출력한다. 소수점 아래 여섯 자리까지 반올림해 적고, 자리가 비면 0으로 채운다. 폭이 정확히 5라면 5.000000으로 출력한다.
힌트
막대가 수평을 유지하려면 실을 매단 지점을 기준으로 양쪽 토크가 같아야 한다. 길이가 인 막대의 왼쪽에 걸린 무게를 , 오른쪽에 걸린 무게를 라 하면 매단 지점에서 왼쪽 끝까지의 거리는 , 오른쪽 끝까지의 거리는 이다.
막대에 걸린 무게는 그 막대 아래에 매달린 모든 구슬의 무게를 더한 값이다. 막대와 실은 무게가 0이므로 더하지 않는다.