一个Petri网是一个计算模型,用来说明并发事件。每个Petri网包含一些库所(被表示成圆圈),变迁(被表示成黑色的矩形),和一些有向边,用来连接库所到变迁,和变迁到库所。每个库所能够包含0个或多个令牌(被表示成黑点)。
这里有2个例子:
每个Petri网的描述首先会包含一个整数NP(0 < NP < 100),紧接着有NP个整数分别表示编号为1,2,…,NP的库所初始有多个个令牌。接着会有一个整数NT(0 < NT < 100)表示变迁的数量。然后,对于每个变迁(编号为1,2,…,NT)将会有一个以0结尾的整数序列。序列中的负数代表输入库所,所以数字-n代表有一个输入库所在n。序列中的正数代表输出库所,所以数字p代表有一个输出库所在p。每个库所至少有一个输入库所,至少有一个输出库所。最后,在NT个变迁的描述之后,会有一个整数代表你至多要模拟变迁发生的次数,NF。输入会包含一个或多个Petri网的描述,最后会有一个0。
对于每个Petri网的描述,输出三行。第一行输出是第几组数据(从1开始连续编号)和是否有NF次变迁发生。如果有,输出这个Petri网在NF次变迁发生后仍然活着。否则输出这个Petri网已经死了和变迁发生的次数。两种情况下,在第二行都输出在模拟结束后,包含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
Case 1: still live after 100 transitions Places with tokens: 1 (1) Case 2: dead after 9 transitions Places with tokens: 2 (1)
数据规模和约定
0 < NP < 100;
0 < NT < 100;
0 < NF < 1000;
每个库所初始的令牌数不超过10000。
每个Petri网的所有变迁输入的整数序列的总长度不超过20000。
每个测试点包含不超过5个Petri网的描述。
蓝桥杯