#188. 沙堆
沙堆
题目描述
阿贝尔沙堆模型是一个著名的显示自组织临界性的动力系统。自从 Per Bak、Chao Tang 和 Kurt Wiesenfeld 在 1987 年的一篇论文中提出该模型以来,对它的研究已经持续了几十年。沙堆预测因其优美的代数结构以及与负载平衡和内部扩散受限聚集等模型的去随机化等应用的相关性,在物理学、计算机科学和数学领域受到广泛关注。沙堆模型与许多其他模型和物理现象有关,如转子路由模型、雪崩模型等。
在沙堆模型中,我们给定了一个无向图 ,其顶点索引为 至 。我们还给出了 个整数 ,其中 表示最初在顶点 上放置了 个筹码。我们每一轮都会选取一个任意顶点 ,使得 上的筹码数不小于连接 的边数,记为 。对于 的每个邻居,它将从 接收一个筹码。因此, 将失去 个筹码。这个过程称为 "发射 "或 "推翻"。发射会一直发生,直到没有顶点 拥有至少 个筹码。
可以证明发射的顺序不会影响结果。同时,发射也有可能永远不会终止。这种情况被称为 "循环"。现在给你一个小群和初始筹码数。请判断该实例是否为递归实例。如果不是,请分别输出每个节点的最终筹码数。
聚类图(又称完整图)是指每两个顶点之间都有一条边相连的图。
输入格式:
每个测试文件中只有一个测试用例。
输入的第一行包含一个整数 ( ),表示小块的大小。
第二行包含 个整数 ( ),其中 表示放置在顶点 上的初始芯片数。
输出格式:
输出一行。
如果给定的沙堆实例将终止,则输出 个整数,中间用空格隔开,其中 个整数表示 个顶点上的最终芯片数。否则输出 "Recurrent"(不带引号)。
请不要在每行末尾输出额外的空格,否则您的解决方案可能会被认为是错误的!
样例
5
5 0 3 0 3
3 3 1 3 1
2
1 0
Recurrent
解释
对于第一个示例测试用例:
- 一开始我们只能选择顶点 。芯片数变为 。
- 现在我们可以选择顶点 或 ,因为这两个顶点都至少有 个筹码。我们选择顶点 ,筹码数变为 。选择顶点 也会得到同样的结果。
- 现在我们选择顶点 。筹码数变为 。没有至少有 个筹码的顶点,因此发射终止。
对于第二个示例测试用例,我们可以重复选择顶点 和 。发射从未终止。