30057 - Domino Effect
你知道吗,除了玩多米诺骨牌之外,你还可以用多米诺骨牌做其他事情吗? 拿一些多米诺骨牌,竖立它们并让它们之间只有很小的间距,就可以构建一排多米诺骨牌。 如果你做得对,你可以推倒第一块多米诺骨牌,导致其他所有的多米诺骨牌相继倒下(这就是“多米诺效应”这个短语的由来)。 虽然只有几块多米诺骨牌做这个有点毫无意义,但在80年代初,一些人却走向了相反的极端。 使用数百万块不同颜色和材料的多米诺骨牌,填满整个大厅,构成复杂的多米诺骨牌倒塌图案,他们创造了(短暂的)艺术品。 在这些构造中,通常不仅一排多米诺骨牌,而是几排多米诺骨牌同时倒下。 你可以想象,时间是一个至关重要的因素。
现在你的任务是编写一个程序,给定由多米诺骨牌形成的这样一个行系统,计算最后一块多米诺骨牌何时何地倒下。 该系统由几个“关键多米诺骨牌”连接的简单多米诺骨牌行组成。 当一个关键多米诺骨牌倒下时,与该多米诺骨牌连接的所有行也会开始倒下(除了那些已经倒下的行)。 当倒下的行到达其他尚未倒下的关键多米诺骨牌时,这些其他关键多米诺骨牌也会倒下,并触发与它们连接的行。 多米诺骨牌行可能从任一端开始倒塌。甚至可能一行同时从两端倒塌,这种情况下,最后一块倒下的多米诺骨牌可能位于其关键多米诺骨牌之间。 你可以假设多米诺骨牌行以均匀的速率倒下。
输入
输入包含多个多米诺系统的描述。每个描述的第一行包含两个整数:关键多米诺骨牌的数量 n(1 \le n \le 500)和它们之间的行数 m。关键多米诺骨牌从 1 到 n 编号。任意一对关键多米诺骨牌之间最多只有一行,并且多米诺图是连通的,即从一个多米诺骨牌到另一个多米诺骨牌至少有一种方式通过一系列多米诺骨牌行到达。
接下来的 m 行每行包含三个整数 a、b 和 l,表示关键多米诺骨牌 a 和 b 之间有一行,从一端到另一端需要 l (l \le 100)秒倒下。
每个系统都是通过倒下关键多米诺骨牌编号 1 来启动的。
输入以一个空的系统结束(其中 n = m = 0),不应对其进行处理。
输出
对于每个案例,输出一行说明案例的编号(System #1,System #2 等)。然后输出一行,包含最后一块多米诺骨牌倒下的时间,小数点右边精确到一位,以及最后一块多米诺骨牌倒下的位置,可能是在一个关键多米诺骨牌上,也可能在两个关键多米诺骨牌之间。遵循输出示例中显示的格式。如果找到多个解决方案,则只输出其中一个。在每个系统后输出一个空行。
样例
输入
2 1 1 2 27 3 3 1 2 5 1 3 5 2 3 5 0 0
输出
System #1 The last domino falls after 27.0 seconds, at key domino 2. System #2 The last domino falls after 7.5 seconds, between key dominoes 2 and 3.