QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 64 MB Total points: 20

#23766. 最軽量のモビール

Statistics

モビールは動く芸術品として広く親しまれている.IOI 日本委員会では,JOI を広報するためにモビールを作成することになった.JOI 広報用モビールは,棒,紐(ひも),錘(おもり)の $3$ 種類の要素を用いて,次のように構成される.

  • 棒の一方の端は青に,もう一方の端は赤に塗られている.
  • 棒は両端以外の $1$ 箇所を支点として紐でつるされる.
  • 支点から赤の端までの長さも支点から青の端までの長さも正整数である.
  • 棒の両端には,紐で錘か他の棒をつるす.
  • 錘は紐を用いてどれかの棒の一端につるされる.
  • 錘には何もつるさない.
  • 錘の重さは正整数である.
  • 紐のうち $1$ 本だけは,片方の端をある棒をつるすためにその棒の支点に結ばれ,もう一方の端は他のどの構成要素とも結ばれていない.他の紐は全て次のいずれかを満たす.
    • ある棒の端とある棒の支点を結ぶ.
    • ある棒の端とある錘を結ぶ.

ただし,どの棒においても,バランスが取れている必要がある.棒と紐の重さは無視できるほど軽いので,棒と紐の重さは全て $0$ であるとみなして解答せよ.つまり,それぞれの棒について,

(その棒の赤の端より下につるされている錘の重さの総計)$\times$(その棒の支点から赤の端までの長さ)$=$(その棒の青の端より下につるされている錘の重さの総計)$\times$(その棒の支点から青の端までの長さ)

であるとき,その棒はバランスが取れているとせよ.

上の 4 つの図の説明 —— 左上:簡単なモビールの例,右上:バランスが取られていないのでモビールではない例,左下:モビールの例,右下:モビールではない例.

どのような長さの棒をどのように結びモビールを構成するかは既に決まっているのだが,錘の重さがまだ決まっていない.モビールは軽い方がつりやすいため,なるべく軽いモビールを作りたい.前述したようにどの棒もバランスを取りながら,モビールの総重量を最小にするような錘の付け方を求め,そのときのモビールの総重量を出力するプログラムを作れ.プログラムには以下のモビールの構成に関する情報が与えられる.

  • 棒の本数 $n$
  • 各棒ごとの情報(棒の番号は $1$ から $n$)
    • 支点から赤の端までの長さと支点から青の端までの長さの比
    • 赤の端につるす棒の番号(錘をつるす場合は $0$)
    • 青の端につるす棒の番号(錘をつるす場合は $0$)

上の 2 つの図の説明 —— 左(棒番号 $1$):この構成で最軽量のモビール,右(棒番号 $1$):最軽量ではないモビール.

入力

$1$ 行目にはモビールに使われている棒の本数 $n$ が書かれている.続く $n$ 行 ($1 \le n \le 100$) には,各々の棒のデータが書かれている.$i + 1$ 行目 ($1 \le i \le n$) には,$4$ つの整数 $p, q, r, b$ が空白を区切りとして書かれており,棒 $i$ において,支点から赤の端までの長さと支点から青の端までの比が $p : q$ であり,赤の端につるされる棒の番号が $r$ であり,青の端につるされる棒の番号が $b$ であることを表している.ただし,棒番号 $0$ は錘がつるされることを表している.また,どの入力においても,モビールの重量の最小値を $w$ とし,入力中で比を表すのに用いられる正整数の最大値を $L$ とすると,$w L < 2^{31}$ を満たす.

出力

出力は $1$ 行だけであり,モビールの重量を出力する.

入出力の例

入出力の例 1 の入力

1
6 9 0 0

入出力の例 1 の出力

5

入出力の例 2 の入力

4
3 2 0 4
1 3 0 0
4 4 2 1
2 2 0 0

入出力の例 2 の出力

40

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.