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 ...
随机推荐
- 【WCF】HTTP 无法注册 URL 进程,不具有此命名空间的访问权限
背景 如题,在运行WCF宿主主机时,出现了问题. 捕获异常为:HTTP 无法注册 URL http://+:8000/WCF/.进程不具有此命名空间的访问权限(有关详细信息,请参见 http: ...
- DIV+CSS自适应窗口高度
<html> <head> <title>DIV+CSS自适应窗口高度</title> <style type="text/css&qu ...
- 让 IE6, 7和 8支持CSS3的HTC文件补丁
让 IE6, 7和 8支持CSS3 IE6,7并不支持CSS3的属性,IE8也不能很好的支持CSS3.但是有一个小脚本能够做到,它可以让IE支持CSS3,包括:border-radius (round ...
- ubuntu安装ssh服务记录
执行命令: sudo apt-get install openssh-server 有时候会出现这个错误: unable to fetch some archives ,maybe run apt- ...
- chm格式文件,win7下用c:/windows/hh.exe打开
chm格式文件,win7下用c:/windows/hh.exe打开
- Oracle存储过程生成日期维度
在数据仓库的创建过程中,往往需要创建日期维度来为以后的数据分析来服务. 方面从多个日期角度: 如:年-月-日,年-季度-月-日,年-周-日 创建表的脚本如下(存储过程的创建过程中有一步操作是向time ...
- C#.NET常见问题(FAQ)-程序如何把窗体文件从从一个项目中复制到另一个项目
一个窗体有三个文件,全部拷贝到新的项目中 在新的项目中点击显示所有文件,然后右击导入的文件,点击包括在项目中,会自动修改颜色(此时还没有被识别为窗体) 重启这个项目,三个文件已经被识别出来了 ...
- Discuz常见大问题-如何允许用户插入视频-如何允许用户在编辑帖子的时候带标签,允许用户插入视频
在用户-用户组中,切换到会员用户组或系统用户组,可以勾选批量编辑前面的方框,然后点击批量编辑 点击论坛相关-帖子相关(默认是基本设置,你可以在这里设置所有用户的所有权限),然后把你要设置允许的用户的组 ...
- Linux下启动eclipse报错
A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be avail Java RunTime Environm ...
- 【技术文档】jeecg3.7-maven搭建好开发环境入门
JEECG 微云高速开发平台(3.7)Maven版本号手把手入门手冊 官方标准开发工具:1.IDE Eclipse Java EE IDE for Web Developers. ...