1 条题解
-
0
自动搬运
来自洛谷,原作者为

Morpheuse
学长说,多读博客少做题,套路就是力量.搬运于
2025-08-24 22:01:17,当前版本为作者最后更新于2022-03-30 21:50:50,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
并不需要上下界网络流.
题意
用 条可相交的路径覆盖每个点 次.
做法
对于每个点 有且仅有 次进入,也有 次离开.
为源点, 为汇点.
以下除特殊说明,费用均为 .
流量为 表示一定有 次离开.
流量为 表示必须要有 次进入.
因为 个人都可以从任意点开始.
相当于我们有 次无需费用即可进入的权限.
所以我们新建一个点 .
流量为 表示有 次无需费用进入的权限.
对于每个 流量为 表示可以从无需费用进入 .
对于每条边 建边 流量为 , 费用为 .
最小费用最大流即可.
代码
scanf("%d%d", &n,&m); for(int i = 1 ; i <= n ; ++ i) scanf("%d", &a[i]); s = 0 , t = maxn - 10; /* 源点. 数组大小. 初始化. */ int ss = maxn - 11; add(s , ss , m , 0); for(int i = 1 ; i <= n ; ++ i) add(ss , i + n , inf , 0); for(int i = 1 ; i <= n ; ++ i) add(s , i , a[i] , 0); for(int i = 1 ; i <= n ; ++ i) add(i + n , t , a[i] , 0); for(int i = 1 ; i <= n - 1 ; ++ i) { for(int j = 1 ; j <= n - i ; ++ j) { int x; scanf("%d", &x); if(x == -1) x = inf; add(i , i + j + n , inf , x); } } printf("%d", cot);
- 1
信息
- ID
- 3552
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者