zoj2930】的更多相关文章

题目大概说有n个任务,每个任务可以提前或推迟,提前或推迟各有一定的费用,有的任务一旦推迟另一个任务也必须推迟,问怎么安排任务使花费最少,且最少花费的条件下提前的任务数最多能多少. 问题就是要把各个任务分成两个集合.这么建容量网络求最小的S-T割:源点向各个任务连容量为提前的费用的边,各个任务向汇点连容量为推迟的费用的边,如果A任务推迟B任务也必须推迟那么连A到B容量为INF的边. 这样求最小割就是最小的花费.S集合的点可以看作是选择推迟的任务,T集合看作是选择提前的任务,画画图就知道了. 而第二…
  各点向S连推迟的花费,向T连提前的花费,S表示提前,T表示推迟.a推迟b也推迟b往a连INF.最小割后从各点出发,能直接或间接到T的就是必须推迟的,剩下的就是能提前的. #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <iomanip> #include <cstrin…