【luogu 3410】拍照
来源:互联网 发布:华南虎事件 知乎 编辑:程序博客网 时间:2024/06/02 06:26
题目描述
小B有n个下属,现小B要带着一些下属让别人拍照。
有m个人,每个人都愿意付给小B一定钱让n个人中的一些人进行合影。如果这一些人没带齐那么就不能拍照,小B也不会得到钱。
注意:带下属不是白带的!!!对于每个下属,如果他带了那么小B需要给他一些钱,保证当他拍照时配合。
请问,小B的净收益最多是多少。
输入输出格式
输入格式:
第1行有2个正整数m和n(0< m,n<=100)。接下来的m行,每行是一个要求拍照的人的有关数据。第一个数是他同意支付该合影的费用;接着是该合影需要的若干下属的编号,以一个0作为行的结束标记。最后一行的n个数是带每个下属的费用。
输出格式:
一个数,表示最大收益。小B可以一个人也不带。
输入输出样例
输入样例#1:
2 3
10 1 2 0
25 2 3 0
5 6 7
输出样例#1:
17
说明
对于10%的数据每个人都要求让全部n个人合影
对于30%的数据n<=15 m<=15
另有10%的数据答案为0
对于50%的数据n<=40 m<=40
另有10%的数据每个人只愿意拍一个人
对于100%的数据m,n<=100
最大权闭合子图
#include<cstdio>#include<cstring>#define min(a,b) ((a)<(b)?(a):(b))#define inf 0x3f3f3f3fusing namespace std;const int MAXN = 5000;const int MAXM = 100000;int h[MAXN],nx[MAXM],to[MAXM],cap[MAXM],cnt=1;int lev[MAXN],q[MAXN],l,r;int n,m;void add_edge(int _u,int _v,int _cap){ cnt++;to[cnt]=_v;cap[cnt]=_cap;nx[cnt]=h[_u];h[_u]=cnt;}void link(int _u,int _v,int _cap){ add_edge(_u,_v,_cap); add_edge(_v,_u,0);}bool bfs(int _s,int _t){ memset(lev,-1,sizeof(lev)); l=r=0;q[r++]=_s;lev[_s]=0; while(l<r){ int t=q[l++]; for(int i=h[t];i;i=nx[i]){ if(lev[to[i]]==-1 && cap[i]>0){ lev[to[i]]=lev[t]+1; q[r++]=to[i]; } } } return lev[_t]!=-1;}int dfs(int _t,int _nd,int _fl){ if(_t==_nd)return _fl; int w=0,used=0; for(int i=h[_nd];i;i=nx[i]){ if(lev[to[i]]==lev[_nd]+1){ w=_fl-used;w=dfs(_t,to[i],min(w,cap[i])); used+=w;cap[i]-=w;cap[i^1]+=w; if(used==_fl)return _fl; } } return used;}int dinic(int _s,int _t){ int rt=0; while(bfs(_s,_t))rt+=dfs(_t,_s,inf); return rt;}int main(){ scanf("%d%d",&m,&n); int sum=0; for(int i=1;i<=m;i++){ int a; scanf("%d",&a); sum+=a; link(0,i,a); while(1){ int b; scanf("%d",&b); if(b==0)break; link(i,m+b,inf); } } for(int i=1;i<=n;i++){ int buf; scanf("%d",&buf); link(m+i,m+n+2,buf); } int ans=sum-dinic(0,m+n+2); printf("%d",ans); return 0;}
0 0
- 【luogu 3410】拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- Luogu 1197
- 【Luogu】 食物链
- lUOGU P1540
- luogu 1313
- luogu 1082
- SpringBoot开发详解(三)--SpringBoot配置文件YML注意事项
- 判断java源文件名称
- java面向对象思想编程
- 在oc中如何利用反射机制
- Python中的字符串
- 【luogu 3410】拍照
- BZOJ 1263: [SCOI2006]整数划分 数学,高精度
- RBF神经网络与BP神经网络的比较
- IMWeb小白十天-Day2
- 将最优装载问题的贪心算法推广到2艘船的情形,贪心算法仍能产生最优解吗?
- 通用卷积神经网络交错组卷积
- readline模块
- 陶陶摘苹果
- java.lang.NoClassDefFoundError: org/openxmlformats/schemas/drawingml/x2006/main/ThemeDocument