#cFYSybttg030403. 1511:【SCOI2011】糖果

1511:【SCOI2011】糖果

1511:【SCOI2011】糖果

题目描述

幼儿园里有 NN 个小朋友,lxhgww 老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。

但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候,lxhgww 需要满足小朋友们的 KK 个要求。

幼儿园的糖果总是有限的,lxhgww 想知道他至少需要准备多少个糖果,才能使得每个小朋友都能够分到糖果,并且满足小朋友们所有的要求。

输入格式

输入的第一行是两个整数 NNKK

接下来 KK 行,表示这些点需要满足的关系,每行 33 个整数 XXAABB

  • 如果 X=1X=1,表示第 AA 个小朋友分到的糖果必须和第 BB 个小朋友分到的糖果一样多。
  • 如果 X=2X=2,表示第 AA 个小朋友分到的糖果必须少于第 BB 个小朋友分到的糖果。
  • 如果 X=3X=3,表示第 AA 个小朋友分到的糖果必须不少于第 BB 个小朋友分到的糖果。
  • 如果 X=4X=4,表示第 AA 个小朋友分到的糖果必须多于第 BB 个小朋友分到的糖果。
  • 如果 X=5X=5,表示第 AA 个小朋友分到的糖果必须不多于第 BB 个小朋友分到的糖果。

输出格式

输出一行,表示 lxhgww 老师至少需要准备的糖果数,如果不能满足小朋友们的所有要求,就输出 1-1

样例

样例输入 #1

5 7
1 1 2
2 3 2
4 4 1
3 4 5
5 4 5
2 3 5
4 5 1

样例输出 #1

11

样例解释 #1

  • N=5N=5 个小朋友,K=7K=7 个要求。
  • 要求:
    1. X=1,A=1,B=2X=1, A=1, B=2a1=a2a_1 = a_2
    2. X=2,A=3,B=2X=2, A=3, B=2a3<a2a_3 < a_2
    3. X=4,A=4,B=1X=4, A=4, B=1a4>a1a_4 > a_1
    4. X=3,A=4,B=5X=3, A=4, B=5a4a5a_4 \ge a_5
    5. X=5,A=4,B=5X=5, A=4, B=5a4a5a_4 \le a_5(结合上一条,得 a4=a5a_4 = a_5
    6. X=2,A=3,B=5X=2, A=3, B=5a3<a5a_3 < a_5
    7. X=4,A=5,B=1X=4, A=5, B=1a5>a1a_5 > a_1
  • 由 1 得 a1=a2a_1 = a_2
  • 由 2 得 a3<a2=a1a_3 < a_2 = a_1
  • 由 3 得 a4>a1a_4 > a_1
  • 由 4 和 5 得 a4=a5a_4 = a_5
  • 由 6 得 a3<a5=a4a_3 < a_5 = a_4
  • 由 7 得 a5=a4>a1a_5 = a_4 > a_1
  • 结合 a4>a1a_4 > a_1a3<a1a_3 < a_1
  • 每个小朋友至少 11 颗糖,且要求尽量少。
    • a3=1a_3 = 1(最小),则 a1=a22a_1 = a_2 \ge 2a4=a53a_4 = a_5 \ge 3
    • a1=a2=2a_1 = a_2 = 2a3=1a_3 = 1a4=a5=3a_4 = a_5 = 3,总和 2+2+1+3+3=112+2+1+3+3=11
  • 可以验证满足所有要求,且无法得到更小的总和,输出 1111

数据范围

  • 对于 30%30\% 的数据,保证 N<100N < 100
  • 对于 100%100\% 的数据,保证 N<100000N < 100000K100000K \le 1000001X51 \le X \le 51A,BN1 \le A, B \le N

时空限制

  • 时间限制:1000 ms
  • 内存限制:65536 KB

注意:本题是差分约束系统的经典应用。将每个小朋友的糖果数 aia_i 看作变量,建立不等式:

  • X=1X=1aA=aBa_A = a_B 转化为 aAaBa_A \ge a_BaAaBa_A \le a_B
  • X=2X=2aA<aBa_A < a_B 转化为 aAaB1a_A \le a_B - 1
  • X=3X=3aAaBa_A \ge a_B
  • X=4X=4aA>aBa_A > a_B 转化为 aAaB+1a_A \ge a_B + 1
  • X=5X=5aAaBa_A \le a_B

另外,每个小朋友至少 11 颗糖:ai1a_i \ge 1

由于求最小值,通常使用最长路(因为约束是 \ge 形式)。注意要判断正环(无解情况)。由于 NN 可达 10510^5,需要使用高效算法如 SPFA(可能被卡,但本题数据较友好)。