工程规划
SERCOI 工程组是一个讲究效率的工程小组。为了规划和管理的方便,他们将一个工程
分为若干个项目,每个项目都可以独立进行。所有项目都工作完毕时,整个工程也就完成
了。每个项目都需要一定的工作时间。工程最后总耗时是从第一个项目开始到最后一个项
目结束的这段时间。
各个项目之间可能存在也可以不存在相互制约关系。如果有制约关系,则可能是以下四
种之一(设两个项目分别为 p 和 q):
(1)SAS p q (p Sart After q Start,项目 p 在项目 q 开始之后才能开始)
(2)FAS p q (p Finish After q Start,项目 p 在项目 q 开始之后才能结束)
(3)SAF p q (p Sart After q Start,项目 p 在项目 q 结束之后才能开始)
(4)FAF p q (p Finish After q Start,项目 p 在项目 q 结束之后才能结束)
如果没有制约关系,则可同时进行。
例如:SAF 1 3 表示项目 1 必须在项目 3 完成后才能开始。若项目 3 工作时间为 3,起始
时刻为 2,则项目 1 最早在时刻 5 才能开始。
作为 SERCOI 小组的项目负责人,请你根据各个项目的工作时间及先后关系,找出一种
安排工程的方案,使整个工程尽可能快的完成。
输入
输入文件的第一行为项目总数 N(1≤N≤100),设项目的编号依次为 1,2,…,N。下
面 N 行依次为完成每个项目所需的工作时间(每个项目占一行)。这个时间为不超过 100
的正整数。
接下来若干行是一些项目间先后次序关系的列表,每行的格式为:
<先后次序关系符> (<项目 p 编号> ( <项目 q 编号>
其中:<先后次序关系符>为 SAS、FAS、SAF、FAF 中的任意一个,“(”表示一个空格
符。
整个文件以一个字母“#”表示结束(单独占一行)
输出
若问题有解,则输出文件有 N 行,依次输出项目 1 到项目 N 的最早开始时间(设整个工
程从 0 时刻开始)。每行的格式为:(项目编号 最早开始时间)。
若问题无解,则输出文只有一行,为一个正整数 0
输入输出示例
INPUT.TXT
3
2
3
4
SAF 2 1