AT_arc026_4 [ARC026D] 道を直すお仕事

题目描述

在“ダイナミック王国”中有 $N$ 个村庄,编号从 $0$ 到 $N-1$。这些村庄原本通过 $M$ 条道路连成一个整体。“连成一个整体”指的是,从任意一个村庄出发,都可以通过若干条道路到达任意其他村庄。某天,一场大灾害摧毁了所有的道路,导致村庄之间无法互相通行。你受国王高桥君的委托,负责修复道路,使“ダイナミック王国”的 $N$ 个村庄重新连成一个整体。 你首先估算了修复每条道路所需的费用和时间。接下来,你需要计算在合理选择要修复的道路时,“能够收支平衡的最低时薪”的最小值。“能够收支平衡的最低时薪”指的是,当“修复道路所需的总时间”乘以“时薪”恰好等于“修复道路所需的总费用”时的“时薪”金额。 请注意,不一定需要修复所有的道路,也可以修复一些对连通村庄整体并非必要的道路。

输入格式

输入通过标准输入按以下格式给出。 > $N$ $M$ > $A_1$ $B_1$ $C_1$ $T_1$ > $A_2$ $B_2$ $C_2$ $T_2$ > $\vdots$ > $A_M$ $B_M$ $C_M$ $T_M$ - 第 $1$ 行包含两个整数 $N\ (2 \leq N \leq 10^4)$ 和 $M\ (1 \leq M \leq 10^4)$,分别表示村庄的数量和道路的数量。 - 接下来的 $M$ 行,每行包含四个整数 $A_i\ (0 \leq A_i \leq N-1)$,$B_i\ (0 \leq B_i \leq N-1)$,$C_i\ (1 \leq C_i \leq 10^6)$,$T_i\ (1 \leq T_i \leq 10^6)$,表示有一条连接村庄 $A_i$ 和 $B_i$ 的道路,修复这条道路需要费用 $C_i$,需要时间 $T_i$。 此外,关于道路的信息,保证以下条件成立: - 对所有 $i$,有 $A_i \neq B_i$。 - 对所有 $i \neq j$,有“$A_i \neq A_j$ 或 $B_i \neq B_j$”且“$A_i \neq B_j$ 或 $B_i \neq A_j$”。

输出格式

请输出“能够收支平衡的最低时薪”的最小值,输出一行。 只要输出的绝对误差不超过 $10^{-2}$ 即可。 输出末尾需换行。

说明/提示

## 部分分 本题设置了部分分。 - 若能正确解决所有 $M \leq 16$ 的测试用例,可获得 $20$ 分。 ## 样例解释 1 在本例中,为了使所有村庄连通,必须修复所有道路。修复所有道路所需的总费用为 $10$,总时间为 $5$,因此能够收支平衡的最低时薪为 $2$。由于允许误差 $10^{-2}$,输出 $2.01$ 或 $1.99$ 等也可以。 ## 样例解释 2 在本例中,修复第 $1$ 条和第 $3$ 条道路时,“能够收支平衡的最低时薪”为 $1.5$,且为最小值。 ## 样例解释 3 在本例中,修复所有道路时,“能够收支平衡的最低时薪”为 $1.333\ldots$,且为最小值。 由 ChatGPT 4.1 翻译