Petri网模拟 Petri Net Simulation

题意翻译

你的任务是模拟$\text{Petri}$网的变迁。$\text{Petri}$网包含$NP$个库所(用$P1$,$P2$…表示)和$NT$个变迁(用$T1$,$T2$…表示)。$0<NP$,$NT<100$。当每个变迁的每个输入库所都至少有一个$\text{token}$时,变迁时允许的。变迁发生的结果是每个输入库所减少一个$\text{token}$,每个输出库所增加一个$\text{token}$。变迁的发生是原子性的,即所有$\text{token}$的增加和减少应同时进行。注意,一个变迁可能有多个相同的输入或者输出。弱国有多个变迁是允许的,一次只能发生一个。 如图所示,一开始只有$T1$是允许的,发生一次$T1$变迁之后有一个$\text{token}$会从$P1$移动到$P2$,但仍然只有$T1$是允许的,因为$2$要求$P2$有两个$\text{token}$。再发生一次$T1$变迁之后$P1$中只剩一个$\text{token}$,而$P2$中有两个,因此$T1\text{和}T2$都可以发生。假定$T2$发生,则$P2$中不再有$\text{token}$,因此$T1$和$T3$都是允许的。 ![temp.jpg](https://i.loli.net/2018/11/25/5bfa9a44175d4.jpg) 输入一个$\text{Petri}$网络。初始时每个库所都有一个$\text{token}$。每个变迁用一个整数序列表示,负数表示输入库所,正数表示输出库所。每个变迁至少包含一个输入和一个输出。最后输入一个整数$NF$,表示要发生$NF$次变迁(同时有多个变迁允许时可以任选一个发生,输入保证这个选择不会影响最终结果)。

题目描述

[problemUrl]: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=10&page=show_problem&problem=745 [PDF](https://uva.onlinejudge.org/external/8/p804.pdf) ![](https://cdn.luogu.com.cn/upload/vjudge_pic/UVA804/7789629a5884a5d6c5b8393ebfdec08b4476c1ed.png)

输入输出格式

输入格式


![](https://cdn.luogu.com.cn/upload/vjudge_pic/UVA804/e3a816d7f3167cb0a1e82ea6fdff68eab281cc9f.png)

输出格式


![](https://cdn.luogu.com.cn/upload/vjudge_pic/UVA804/a80a8b754e0f2eb506b9e731d909911ac1f13ff1.png)

输入输出样例

输入样例 #1

2
1 0
2
-1 2 0
-2 1 0
100
3
3 0 0
3
-1 2 0
-2 -2 3 0
-3 1 0
100
0

输出样例 #1

Case 1: still live after 100 transitions
Places with tokens: 1 (1)
Case 2: dead after 9 transitions
Places with tokens: 2 (1)