hdu 4971/ 2014多校/最大权闭合图
题意:n个项目(每一个相应获得一定价值)。m个技术问题(每一个须要支出一定价值),每一个项目必须要攻克若干个技术问题。技术难题之间有拓扑关系。
关键是建图。一看,第一感觉就是最大权闭合图,马上建好了图。不难:以项目为正权点,问题为负权点。有依赖关系的点边就可以。
ps:这题题目有句话有问题,按例子的来!害我贡献一次WA.....
#include<iostream>
#include<queue>
#include<cstdio>
#include<cstring>
using namespace std;
const int inf=0x3f3f3f3f;
const int maxv=200,maxe=10000;
int e[maxe][3];int head[maxv];int nume=0;
void inline adde(int i,int j,int w)
{
e[nume][0]=j;e[nume][1]=head[i];head[i]=nume;
e[nume++][2]=w;
e[nume][0]=i;e[nume][1]=head[j];head[j]=nume;
e[nume++][2]=0;
}
int n,m,ss,tt;
int vis[maxv];int lev[maxv];
bool bfs()
{
for(int i=0;i<maxv;i++)
vis[i]=lev[i]=0;
queue<int>q;
q.push(ss);
vis[ss]=1;
while(!q.empty())
{
int cur=q.front();
q.pop();
for(int j=head[cur];j!=-1;j=e[j][1])
{
int v=e[j][0];
if(!vis[v]&&e[j][2]>0)
{
lev[v]=lev[cur]+1;
vis[v]=1;
q.push(v);
}
}
}
return vis[tt];
}
int dfs(int u,int minf)
{
if(u==tt||minf==0)return minf;
int sumf=0,f;
for(int j=head[u];j!=-1&&minf;j=e[j][1])
{
int v=e[j][0];
if(lev[v]==lev[u]+1&&e[j][2]>0)
{
f=dfs(v,minf<e[j][2]? minf:e[j][2]);
e[j][2]-=f;e[j^1][2]+=f;
sumf+=f; minf-=f;
}
}
if(sumf==0)lev[u]=-1;
return sumf;
}
int dinic()
{
int sum=0;
while(bfs())sum+=dfs(ss,inf);
return sum;
}
void init()
{
nume=0;
for(int i=0;i<maxv;i++)
head[i]=-1;
}
int main()
{
int T;
scanf("%d",&T);
for(int ii=1;ii<=T;ii++)
{
init();
scanf("%d%d",&n,&m);
ss=n+m;tt=ss+1; int sumz=0;
int aa,bb;
for(int i=0;i<n;i++)
{
scanf("%d",&aa);
adde(ss,i,aa);sumz+=aa;
}
for(int i=0;i<m;i++)
{
scanf("%d",&aa);
adde(i+n,tt,aa);
}
for(int i=0;i<n;i++)
{
scanf("%d",&aa);
while(aa--)
{
scanf("%d",&bb);
adde(i,bb+n,inf);
}
}
for(int i=0;i<m;i++)
for(int j=0;j<m;j++)
{
scanf("%d",&aa);
if(aa==1)
{
adde(i+n,j+n,inf);
}
}
/* for(int i=0;i<n+m+2;i++)
for(int j=head[i];j!=-1;j=e[j][1])
{
int v=e[j][0];
if(j%2==0)
printf("%d->%d:%d\n",i,v,e[j][2]);
}*/
int ans=sumz-dinic();
printf("Case #%d: %d\n",ii,ans);
}
return 0;
}
hdu 4971/ 2014多校/最大权闭合图的更多相关文章
- HDU 3061:Battle(最大权闭合图)
http://acm.hdu.edu.cn/showproblem.php?pid=3061 题意:中文题意. 思路:和上一题神似啊,比上一题还简单,重新看了遍论文让我对这个理解更加深了. 闭合图:如 ...
- hdu 3917 修路与公司 最大权闭合图 好题
Road constructions Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- hdu 4971 多校10最大权闭合图
/* 很明显的最大权闭合图题 */ #include<stdio.h> #include<string.h> #include<queue> using names ...
- hdu - 4971 - A simple brute force problem.(最大权闭合图)
题意:n(n <= 20)个项目,m(m <= 50)个技术问题,做完一个项目能够有收益profit (<= 1000),做完一个项目必须解决对应的技术问题,解决一个技术问题须要付出 ...
- HDU 4971 - A simple brute force problem【最大权闭合图】
有n(20)个工程,完成每个工程获得收益是p[i],m(50)个需要解决的难题,解决每个难题花费是c[i] 要完成第i个工程,需要先解决ki个问题,具体哪些问题,输入会给出 每个难题之间可能有依赖关系 ...
- hdu 3061 Battle 最大权闭合图
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3061 由于小白同学近期习武十分刻苦,很快被晋升为天策军的统帅.而他上任的第一天,就面对了一场极其困难的 ...
- hdu 3879 Base Station 最大权闭合图
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3879 A famous mobile communication company is plannin ...
- hdu 3061 hdu 3996 最大权闭合图 最后一斩
hdu 3061 Battle :一看就是明显的最大权闭合图了,水提......SB题也不说边数多少....因为开始时候数组开小了,WA....后来一气之下,开到100W,A了.. hdu3996. ...
- HDU 3879 && BZOJ 1497:Base Station && 最大获利 (最大权闭合图)
http://acm.hdu.edu.cn/showproblem.php?pid=3879 http://www.lydsy.com/JudgeOnline/problem.php?id=1497 ...
随机推荐
- Mali GPU OpenGL ES 应用性能优化--測试+定位+优化流程
1. 使用DS-5 Streamline定位瓶颈 DS-5 Streamline要求GPU驱动启用性能測试,在Mali GPU驱动中激活性能測试对性能影响微不足道. 1.1 DS-5 Streamli ...
- Bootstrap全局CSS样式之表格
.table--基础表格样式. .table-striped--给<tbody>之内的每一行添加斑马条纹样式: .table-bordered--为表格添加边框: .table-hover ...
- C#.NET常见问题(FAQ)-如何生成release版本的程序,生成debug版本的程序
除了右击项目在生成中配置改成Release还要在顶部切换成Release 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai1 ...
- 如何用代码组织多个Storyboard(故事板)
1. 新建一个Storyboard取名为OtherStoryboard.storyboard 2. 使用下面代码加载 UIStoryboard *newStoryboard = [UIStoryboa ...
- Linux文件类型(学习笔记六)
一.Linux下的文件类型 普通文件:在由 ls –al 所显示出来的属性方面,第一个属性为 [ - ] 目录文件:在由 ls –al 所显示出来的属性方面,第一个属性为 [ d ] 设备文件:一般都 ...
- static 和 no static Member function学习
以下是做实验的一段代码: #include <iostream> using namespace std; typedef void (*p)(); class Object { publ ...
- 虚拟机下linux迁移造成MAC地址异常处理办法
虚拟机下linux迁移造成MAC地址异常处理办法 Linux无法启用网卡:Device eth0 has different MAC address than expected,ignoring解决 ...
- mysqladmin: connect to server at 'localhost' failed
1:mysqladmin: connect to server at 'localhost' failed 2: 3: 4:
- 实现 1像素border
border-1px($color) position: relative &:after display: block position: absolute left: 0 bottom: ...
- org.dom4j.DocumentException:对实体 "virtual_card_id" 的引用必须以 ';' 分隔符结尾
Error on line 1 of document : 对实体 "virtual_card_id" 的引用必须以 ';' 分隔符结尾. CreateTime--2018年 ...