套餐链中的订单必须连续配送,所以可以把每条套餐链整体看成一个不可拆分的块,不属于套餐链的订单自己形成一个块。
设一个块的总配送时间为 P,块内某个订单完成时,已经在块内配送了 s 时间。
如果整个块的完成时刻为 C,那么这个订单的完成时刻就是
某外卖站点当天只派一名骑手出站。有 n 个订单,编号 1∼n。骑手同一时刻只能配送一单,从时刻 0 开始连续工作,两单之间没有额外空闲时间。第 i 个订单的配送耗时为 ti,客户要求的最迟送达时刻为 di。骑手一旦开始配送某单就必须做到结束,该单完成时刻为开始时刻加上 ti,必须不超过 di。
订单之间还有两类约束:
请给出一个完成全部订单的配送顺序,并同时满足:
若把依赖和套餐的先后关系合在一起后出现环形等待(即有环),输出 −1。例如套餐链要求先 a 后 b,同时又有依赖要求先 b 后 a。不存在环、但任何顺序都会导致至少一单超时,输出 −2。
第一行三个整数 n、m、k。
接下来 n 行,第 i 行两个整数 ti、di。
接下来 m 行,每行两个整数 u、v,表示必须先完成 u 再开始 v。
接下来 k 行,每行先给出一个整数 L(L≥2),再给出 L 个订单编号,表示一条套餐链,必须按从左到右的顺序连续配送。
1≤n≤100
0≤m≤5000
0≤k≤n
1≤ti≤1000
1≤di≤109
1≤u,v≤n,u=v
2≤L≤n
套餐链两两不相交,链内编号互不相同,编号都在 1∼n 内
若存在环形等待,输出 −1。
若无环但无法让全部订单在截止前送达,输出 −2。
否则输出一行 n 个整数,表示字典序最小的合法配送顺序,数字之间用空格分隔。
输入
4 0 1
3 10
3 6
1 4
1 100
2 3 4
输出
2 3 4 1
说明
没有出餐依赖。套餐链要求订单 3 送完后必须紧接着送订单 4。
按编号从小到大的 1 2 3 4,完成时刻为 3、6、7、8,订单 3 在时刻 7 才完成,超过 4。把 1 插在 3 和 4 中间得到 2 3 1 4,字典序更小,但破坏了套餐必须连续。
合法顺序有 2 3 4 1(完成时刻 3、4、5、8)和 3 4 2 1(完成时刻 1、2、5、8)。前者字典序更小。
输入
2 2 0
1 10
1 10
1 2
2 1
输出
-1
说明
订单 1 必须在 2 前,订单 2 又必须在 1 前,形成环形等待,输出 −1。
In following contests:
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册