你知道吗,除了玩多米诺骨牌之外,你还可以用多米诺骨牌做其他事情吗? 拿一些多米诺骨牌,竖立它们并让它们之间只有很小的间距,就可以构建一排多米诺骨牌。 如果你做得对,你可以推倒第一块多米诺骨牌,导致其他所有的多米诺骨牌相继倒下(这就是“多米诺效应”这个短语的由来)。 虽然只有几块多米诺骨牌做这个有点毫无意义,但在80年代初,一些人却走向了相反的极端。 使用数百万块不同颜色和材料的多米诺骨牌,填满整个大厅,构成复杂的多米诺骨牌倒塌图案,他们创造了(短暂的)艺术品。 在这些构造中,通常不仅一排多米诺骨牌,而是几排多米诺骨牌同时倒下。 你可以想象,时间是一个至关重要的因素。
现在你的任务是编写一个程序,给定由多米诺骨牌形成的这样一个行系统,计算最后一块多米诺骨牌何时何地倒下。 该系统由几个“关键多米诺骨牌”连接的简单多米诺骨牌行组成。 当一个关键多米诺骨牌倒下时,与该多米诺骨牌连接的所有行也会开始倒下(除了那些已经倒下的行)。 当倒下的行到达其他尚未倒下的关键多米诺骨牌时,这些其他关键多米诺骨牌也会倒下,并触发与它们连接的行。 多米诺骨牌行可能从任一端开始倒塌。甚至可能一行同时从两端倒塌,这种情况下,最后一块倒下的多米诺骨牌可能位于其关键多米诺骨牌之间。 你可以假设多米诺骨牌行以均匀的速率倒下。