hdu 3879 最大权闭合图(裸题)
- /*
- 裸的最大权闭合图
- 解:参见胡波涛的《最小割模型在信息学竞赛中的应用
- #include<stdio.h>
- #include<string.h>
- #include<stdlib.h>
- #include<queue>
- using namespace std;
- #define N 55100//刚开始开的是5100一直越界应该是n+m
- #define NN 510000
- #define inf 0x3fffffff
- struct node {
- int u,v,w,next;
- }bian[NN*8];
- int head[N],yong,dis[N],work[N];
- void init() {
- yong=0;
- memset(head,-1,sizeof(head));
- }
- void addedge(int u,int v,int w) {
- bian[yong].v=v;
- bian[yong].w=w;
- bian[yong].next=head[u];
- head[u]=yong++;
- }
- int bfs(int s,int t)
- {
- memset(dis,-1,sizeof(dis));
- queue<int>q;
- q.push(s);
- dis[s]=0;
- while(!q.empty())
- {
- int u=q.front();
- q.pop();
- for(int i=head[u];i!=-1;i=bian[i].next)
- {
- int v=bian[i].v;
- if(bian[i].w&&dis[v]==-1)
- {
- dis[v]=dis[u]+1;
- q.push(v);
- if(v==t)
- return 1;
- }
- }
- }
- return 0;
- }
- int dfs(int s,int limit,int t)
- {
- if(s==t)return limit;
- for(int &i=work[s];i!=-1;i=bian[i].next)
- {
- int v=bian[i].v;
- if(bian[i].w&&dis[v]==dis[s]+1)
- {
- int tt=dfs(v,min(limit,bian[i].w),t);
- if(tt)
- {
- bian[i].w-=tt;
- bian[i^1].w+=tt;
- return tt;
- }
- }
- }
- return 0;
- }
- int dinic(int s,int t)
- {
- int ans=0;
- while(bfs(s,t))
- {
- memcpy(work,head,sizeof(head));
- while(int tt=dfs(s,inf,t))
- ans+=tt;
- }
- return ans;
- }
- int main(){
- int n,m,i,k,sum,u,v,w,s,t;
- while(scanf("%d%d",&n,&m)!=EOF) {
- init();
- s=0;t=n+m+1;
- for(i=1;i<=n;i++) {
- scanf("%d",&k);
- addedge(i,t,k);
- addedge(t,i,0);
- }
- sum=0;
- for(i=1;i<=m;i++) {
- scanf("%d%d%d",&u,&v,&w);
- addedge(s,i+n,w);
- addedge(i+n,s,0);
- addedge(i+n,u,inf);
- addedge(u,i+n,0);
- addedge(i+n,v,inf);
- addedge(v,i+n,0);
- sum+=w;
- }
- printf("%d\n",sum-dinic(s,t));
- }
- return 0;}
hdu 3879 最大权闭合图(裸题)的更多相关文章
- hdu 2987最大权闭合图模板类型题
/* 最大权闭合图模板类型的题,考验对知识概念的理解. 题意:如今要辞退一部分员工.辞退每个员工能够的到一部分利益(能够是负的),而且辞退员工,必须辞退他的下属.求最大利益和辞退的最小人数. 最大权闭 ...
- hdu 3917 修路与公司 最大权闭合图 好题
Road constructions Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- hdu 3061 hdu 3996 最大权闭合图 最后一斩
hdu 3061 Battle :一看就是明显的最大权闭合图了,水提......SB题也不说边数多少....因为开始时候数组开小了,WA....后来一气之下,开到100W,A了.. hdu3996. ...
- hdu 3917 (最大权闭合图)
题意:政府有一些路,m个公司来修,每个公司修路要交税给政府,修路政府要付给公司费用,求政府能获得的最大利润,如果选择一个公司负责一个项目,那么该公司负责的其它项目也必须由他负责,并且与其有相连关系的公 ...
- hdu 3996 (最大权闭合图)
题意:有n个区域布局,每个区域有一些金矿,挖开金矿需要一定的费用,可以得到一定的利润,要想挖开一个金矿,必须挖开所有在这个金矿上边的金矿,求最大利益,给的数据价值太大,用64位. 分析:如果一个金矿可 ...
- hdu 3061 (最大权闭合图)
分析:城池之间有依赖关系,汇点与能获得兵力的城池连接,容量为可以获得的兵力,损耗兵力的城池与汇点连接容量为损耗的兵力,有依赖关系的城池间连边,容量为无穷大,跑网络流求出的最小割就是损耗的最小兵力,,, ...
- HDU 3917 最大权闭合图 求最小割
具体参考http://blog.csdn.net/power721/article/details/6665750 TODO //#pragma comment(linker, "/STAC ...
- hdu 3879 hdu 3917 构造最大权闭合图 俩经典题
hdu3879 base station : 各一个无向图,点的权是负的,边的权是正的.自己建一个子图,使得获利最大. 一看,就感觉按最大密度子图的构想:选了边那么连接的俩端点必需选,于是就以边做点 ...
- hdu 3879 Base Station 最大权闭合图
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3879 A famous mobile communication company is plannin ...
随机推荐
- Suricata的总体架构
Suricata的总体架构 报文检测系统通常四大部分,报文获取.报文解码.报文检测.日志记录:suricata不同的功能安装模块划分,一个模块的输出是另一个模块的输入,suricata通过线程将模块 ...
- C++ <string> 里面的size_type
string::size_type string的 str.size() 返回值是一个unsigned,实际上返回的是size_type类型的值. string类和其他的大多数标准库类型都定义了几套配 ...
- AS 开发环境配置
安装时不用设置代理(proxy). 建议选择标准安装,自定义安装容易选掉一些功能.插件. SDK Tools里的(HAXM installer)有时会未安装,安装完需检查(HAXM installer ...
- hihocoder offer收割编程练习赛8 C 数组分拆
思路:(引自bfsoyc的回答:http://hihocoder.com/discuss/question/4160) 动态规划.状态dp[i]表示 前i个数的合法的方案数,转移是 dp[i] = s ...
- 亲身经历,Java面试题整理
博主在2015年暑期参加过一些Java开发工程师实习的面试和笔试,在此将重点整理出来,以供大家学习. 资料1: 一.单继承 1.1Java类是否支持多重继承? 答:继承的基本原则是: 子类继承父类的所 ...
- Android小玩意儿-- 从头开发一个正经的MusicPlayer(二)
1·在Service中实例化MusicPlayer,实现对整个播放过程的控制 上一次做到了找到音乐数据,并封装成对象装在ArrayList里,把数据的信息显示在UI上.下面一个阶段就要开始真正的音乐播 ...
- win应用只允许单个实例运行,并将已运行实例窗口置顶
关键词:windows,c++,桌面应用,单个实例,窗口置顶 目标:1.判断本程序是否已有一个实例在运行.2.若有,则激活已在运行的实例(将其窗口置顶),并退出当前运行. 1.使用semaphore来 ...
- File.Exists 文件不存在 Or FileNotFoundException
标题警告,本文仅限走投无路,最终可能的一个问题导致. 最开始出现在找不到文件,测试发现: 看起来毫无毛病 而后各种测试: 注意看,第一行跟第三行一模一样 发现[@"]这两个字符有毒,如 ...
- MATLAB GUI制作快速入门
创建空白的GUI在MATLAB命令行中输入guide新建GUI,选择Blank GUI (Default),点击确定后就生成了一个空白的GUI制作界面,如下图所示 图1制作GUI的具体过程简单加法器将 ...
- oracle的Hint
与优化器模式相关的Hint 1 ALl_ROWS 让优化器启用CBO /*+ all_rows */ 2 first_rows(n) 让优化器启用CBO 模式,而且得到目标sql的执行计 ...