BZOJ 1497 JZYZOJ 1344 [NOI2006]最大获利 网络流 最大权闭合图
http://www.lydsy.com/JudgeOnline/problem.php?id=1497
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>
using namespace std;
const int maxn=;
const int minf=<<;
int n,m;
int a[maxn]={};
int vis[maxn]={};
struct nod{
int y,next,v,rev;
}e[maxn*];
int head[maxn],dep[maxn],tot=;
void init(int x,int y,int v){
e[++tot].y=y;e[tot].v=v;e[tot].next=head[x],e[tot].rev=tot+;
head[x]=tot;
e[++tot].y=x;e[tot].v=;e[tot].next=head[y],e[tot].rev=tot-;
head[y]=tot;
}
int bfs(int st,int ed){
queue<int>q;
memset(dep,-,sizeof(dep));
dep[st]=;q.push(st);
int x,y,v;
while(!q.empty()){
x=q.front();q.pop();
for(int i=head[x];i;i=e[i].next){
y=e[i].y;v=e[i].v;
if(dep[y]==-&&v){
dep[y]=dep[x]+;q.push(y);
}
}
}
return dep[ed]!=-;
}
int dfs(int x,int ed,int mi){
if(x==ed)return mi;
int y,v,f,tsn=;
for(int i=head[x];i;i=e[i].next){
y=e[i].y;v=e[i].v;
if(v&&dep[y]==dep[x]+){
f=dfs(y,ed,min(mi-tsn,v));
e[i].v-=f;
e[e[i].rev].v+=f;
tsn+=f;
if(tsn==mi)return tsn;
}
}
if(!tsn)dep[x]=-;
return tsn; }
int dinic(int st,int ed){
int ans=;
while(bfs(st,ed)){
ans+=dfs(st,ed,minf);
}
return ans;
}
int main(){
scanf("%d%d",&n,&m);
int x,y,v,st=n+m+,ed;
ed=st+;
int ans=;
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
init(i,ed,a[i]);
}
for(int i=;i<=m;i++){
scanf("%d%d%d",&x,&y,&v);
ans+=v;
init(i+n,x,minf);
init(i+n,y,minf);
init(st,i+n,v);
}
printf("%d\n",ans-dinic(st,ed));
return ;
}
BZOJ 1497 JZYZOJ 1344 [NOI2006]最大获利 网络流 最大权闭合图的更多相关文章
- HDU 3879 && BZOJ 1497:Base Station && 最大获利 (最大权闭合图)
http://acm.hdu.edu.cn/showproblem.php?pid=3879 http://www.lydsy.com/JudgeOnline/problem.php?id=1497 ...
- BZOJ 1497: [NOI2006]最大获利(最大权闭合图)
http://www.lydsy.com/JudgeOnline/problem.php?id=1497 题意: 思路: 论文题,只要看过论文的话就是小菜一碟啦~ 每个用户群i作为一个结点分别向相应的 ...
- BZOJ 1497 最大获利(最大权闭合图)
1497: [NOI2006]最大获利 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 4686 Solved: 2295 [Submit][Statu ...
- 1497: [NOI2006]最大获利(最大权闭合子图)
1497: [NOI2006]最大获利 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 5503 Solved: 2673 Description 新的技 ...
- BZOJ 1497: [NOI2006]最大获利(最大权闭合子图)
1497: [NOI2006]最大获利 Time Limit: 5 Sec Memory Limit: 64 MB Description 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机 ...
- bzoj 1497 [NOI2006]最大获利【最大权闭合子图+最小割】
不要被5s时限和50000点数吓倒!大胆网络流!我一个5w级别的dinic只跑了1s+! 看起来没有最大权闭合子图的特征--限制,实际上还是有的. 我们需要把中转站看成负权点,把p看成点权,把客户看成 ...
- bzoj1497: [NOI2006]最大获利(最大权闭合子图)
1497: [NOI2006]最大获利 题目:传送门 题解: %%%关于最大权闭合子图很好的入门题 简单说一下什么叫最大权闭合子图吧...最简单的解释就是正权边连源点,负权边连汇点(注意把边权改为正数 ...
- NOI2006 最大获利(最大权闭合子图)
codevs 1789 最大获利 2006年NOI全国竞赛 时间限制: 2 s 空间限制: 128000 KB 题目描述 Description 新的技术正冲击着手机通讯市场,对于各大运营商来 ...
- _bzoj1497 [NOI2006]最大获利【最大权闭合子图】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1497 保存最大流模版. 选一个用户群,就必须要选对应的两个中转站,这种关系类似“最大全闭合子 ...
随机推荐
- 使用SPLUNK进行简单Threat Hunting
通过订阅网上公开的恶意ip库(威胁情报),与SIEM平台中网络流量日志进行匹配,获得安全事件告警. 比如,这里有一个malware urls数据下载的网站,每天更新一次: https://urlhau ...
- python设计模式之单例模式(一)
前言 单例模式是创建模式中比较常见和常用的模式,在程序执行的整个生命周期只存在一个实例对象. 系列文章 python设计模式之单例模式(一) python设计模式之常用创建模式总结(二) python ...
- python爬虫多线程编程
#使用了线程库 import threading from queue import Queue from bs4 import BeautifulSoup import json import re ...
- 004_Gradle 笔记——Java构建入门
Gradle是一个通用的构建工具,通过它的构建脚本你可以构建任何你想要实现的东西,不过前提是你需要先写好构建脚本的代码.而大部分的项目,它 们的构建流程基本是一样的,我们不必为每一个工程都编写它的构建 ...
- 简约而不简单的Django
本文面向:有python基础,刚接触web框架的初学者. 环境:windows7 python3.5.1 pycharm专业版 Django 1.10版 pip3 一.Django简介 百度百 ...
- C/C++——C语言跳出多重循环方法
c语言的break语句只能跳出离它最近的一层循环,但是我们有时候需要跳出多层循环,以下有几种跳出多重循环的方法: 1. 使用goto ; i < MAX1; i++) { ; j < MA ...
- Zabbix3.0源码安装
环境:nginx1.6.3 php-5.6.22 mysql-5.5.49 请参考前面的博文自行搭建 安装依赖并创建用户 [root@test88 ~]# yum install -y libxml2 ...
- DB2:FETCH FIRST 1 ROWS ONLY
DB2:FETCH FIRST ROWS ONLY,在Oracle中使用where rownum=1代替 DB2: SELECT INSTORAGENO FROM ( SELECT max(AUDIT ...
- IEEEXtreme 10.0 - Playing 20 Questions with an Unreliable Friend
这是 meelo 原创的 IEEEXtreme极限编程大赛题解 Xtreme 10.0 - Playing 20 Questions with an Unreliable Friend 题目来源 第1 ...
- 06 java 基础:java 循环 递归
1 递归实现 1 + 2 +3 +4 +5 + .... +100 public static int addSum(int num){ if(num == 1) return 1; return n ...