#cacc20252D. David 的生产调度

    ID: 279 Type: Default 1000ms 256MiB Tried: 1 Accepted: 1 Difficulty: 6 Uploaded By: Tags>图结构网络流费用流上下界网络流

David 的生产调度

时间限制: 1.0 秒

空间限制: 256 MB

题目描述

David 有一个制造工厂,工厂里有 nn 名工人。工厂接受了一个大订单,包括 mm 种产品,其中第 ii 种产品需要 aia_i 个。

由于工人擅长的工艺不同,每个工人都只能制作其中的一些产品。让工人工作需要发工资,由于每个工人的能力不同,工资也是不同的,让第 ii 名工人每制作一件产品,就需要付 bib_i 的工资。

然而事情并没有这么简单,如果一名工人没有安排工作,他就没有收入,会生气地找 David 麻烦,同样的,如果一名工人被安排的工作过多,他就无法完成任务,也会生气地找 David 麻烦。还好 David 对自己的工人足够了解,他知道第 ii 名工人可接受的生产产品个数的范围是 [li,ri][l_i,r_i],即如果工人 ii 被安排的产品件数小于 lil_i 或大于 rir_i 都会产生麻烦。

David 想知道,他能否完成订单的要求,如果可以,他最少需要给工人多少工资才能完成。

输入格式

从标准输入读入数据。

第一行输入两个整数 n,mn,m,含义如题面所示。

第二行输入 mm 个整数 aia_i,含义如题面所示。

第三行输入 nn 个整数 bib_i,含义如题面所示。

接下来 nn 行,每行输入两个整数 li,ril_i,r_i,依次表示每个工人可接受的产品数量范围。

接下来 nn 行,每行输入若干个整数,首先输入一个整数 kik_i,表示该工人可以生产的产品种类数,接下来输入 kik_i 个整数,依次表示该工人可以生产的产品种类编号。

输出格式

输出到标准输出。

输出一行一个整数,如果无法满足订单要求,输出 1-1,否则输出David要付的最小工资。

3 2
5 10
5 6 3
1 10
5 6
2 5
1 1
1 2
2 1 2
70

子任务

对于 20%20\% 的数据,有 1n,m5,i=1mai201\leq n,m\leq 5,\sum\limits_{i=1}^m a_i\leq 20

对于另外 20%20\% 的数据,有 li=0l_i=0

对于 100%100\% 的数据,有:

  • 1n,m2501\leq n,m\leq 250
  • 1ai1001\leq a_i\leq 100
  • 1bi5001\leq b_i\leq 500
  • 0lirii=1mai0\leq l_i\leq r_i\leq \sum\limits_{i=1}^m a_i