poj 3469 最小割模板sap+gap+弧优化
/*以核心1为源点,以核心2为汇点建图,跑一遍最大流*/
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
#define N 21000
#define inf 999999999
struct node {
int u,v,w,next;
}bian[N*40];
int head[N],cur[N],gap[N],stac[N],top,n,sink,source,yong,start,dis[N];
void init() {
memset(head,-1,sizeof(head));
top=0;yong=0;
}
void addedge(int u,int v,int w){
bian[yong].u=u;
bian[yong].v=v;
bian[yong].w=w;
bian[yong].next=head[u];
head[u]=yong++;
}
void bfs() {
queue<int>q;
memset(dis,-1,sizeof(dis));
q.push(sink);
dis[sink]=0;
while(!q.empty()) {
int c=q.front();
int i;
q.pop();
for(i=head[c];i!=-1;i=bian[i].next) {
int v=bian[i].v;
if(dis[v]==-1) {
dis[v]=dis[c]+1;
q.push(v);
}
}
}
}
int ISAP() {
int i,sum=0,k;
bfs();
memset(gap,0,sizeof(gap));
for(i=1;i<=n;i++) {
gap[dis[i]]++;
cur[i]=head[i];
}
k=source;
while(dis[source]<n) {
if(k==sink) {
int mi=inf,tep;
for(i=0;i<top;i++){
int e=stac[i];
if(mi>bian[e].w) {
mi=bian[e].w;
tep=i;
}
}
for(i=0;i<top;i++) {
int e=stac[i];
bian[e].w-=mi;
bian[e^1].w+=mi;
}
sum+=mi;
top=tep;
k=bian[stac[top]].u;
}
for(i=cur[k];i!=-1;i=bian[i].next) {
int v=bian[i].v;
if(bian[i].w&&dis[k]==dis[v]+1) {
cur[k]=i;
k=v;
stac[top++]=i;
break;
}
}
if(i==-1) {
int m=n,i;
for(i=head[k];i!=-1;i=bian[i].next) {
int v=bian[i].v;
if(m>dis[v]&&bian[i].w) {
m=dis[v];
cur[k]=i;
}
}
if(--gap[dis[k]]==0)break;
gap[dis[k]=m+1]++;
if(k!=source)
k=bian[stac[--top]].u;
}
}
return sum;
}
int main() {
int i,a,b,c,m;
while(scanf("%d%d",&n,&m)!=EOF) {
source=n+1;
sink=n+2;
init();
for(i=1;i<=n;i++) {
scanf("%d%d",&a,&b);
addedge(source,i,a);
addedge(i,source,0);
addedge(i,sink,b);
addedge(sink,i,0);
}
while(m--) {
scanf("%d%d%d",&a,&b,&c);
addedge(a,b,c);
addedge(b,a,c);
}
n+=2;
printf("%d\n",ISAP());
}
return 0;
}
poj 3469 最小割模板sap+gap+弧优化的更多相关文章
- POJ 3469 最小割 Dual Core CPU
题意: 一个双核CPU上运行N个模块,每个模块在两个核上运行的费用分别为Ai和Bi. 同时,有M对模块需要进行数据交换,如果这两个模块不在同一个核上运行需要额外花费. 求运行N个模块的最小费用. 分析 ...
- 网络流SAP+gap+弧优化算法
poj1273 Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 54962 Accept ...
- 网络流 最大流—最小割 之SAP算法 详解
首先引入几个新名词: 1.距离标号: 所谓距离标号 ,就是某个点到汇点的最少的弧的数量(即边权值为1时某个点到汇点的最短路径长度). 设点i的标号为level[i],那么如果将满足level[i]=l ...
- poj 2125(最小割)
题目链接:http://poj.org/problem?id=2125 思路:将最小点权覆盖转化为最小割模型,于是拆点建图,将点i拆成i,i+n,其中vs与i相连,边容量为w[i]-,i+n与vt相连 ...
- 最大流/最小割模板(isap) POJ1273
isap模板核心代码: //d[]为距离标号数组,d[i]表示节点i到汇点的距离 //gap[]为GAP优化数组,gap[i]表示到汇点距离为i的节点个数 int dfs(int k,int flow ...
- poj2914无向图的最小割模板
题意:给出无向图的点,边,权值.求最小割. 思路:根据题目规模,最大流算法会超时. 网上参考的模板代码. 代码: /*最小割集◎Stoer-Wagner算法:一个无向连通网络,去掉一个边集可以使其变成 ...
- poj 3204(最小割--关键割边)
Ikki's Story I - Road Reconstruction Time Limit: 2000MS Memory Limit: 131072K Total Submissions: 7 ...
- ISAP 最大流 最小割 模板
虽然这道题用最小割没有做出来,但是这个板子还是很棒: #include<stdio.h> #include<math.h> #include<string.h> # ...
- poj2914 Minimum Cut 全局最小割模板题
Minimum Cut Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 8324 Accepted: 3488 Case ...
随机推荐
- ASP.NET MVC中的嵌套布局页
在WEB窗体模式中,用惯了母版页,并且常有母版页嵌套的情况. 而在MVC模式下,对应母版页的,称作为布局页.默认的布局页为 ~/Views/Shared/_Layout.cshtml.默认每个页面都会 ...
- RTP协议分析和详解
一.RTP协议分析 第1章. RTP概述 1.1. RTP是什么 RTP全名是Real-time Transport Protocol(实时传输协议).它是IETF提出的一个标准,对应的RF ...
- LA3276
费用流 这种棋盘模型大概都是网络流吧 首先我们知道棋子之间不会影响到达目标的步数,那么就好做了,枚举终点,然后就是最小权匹配了,因为就是寻找总和最小,然后费用流就行了. #include<bit ...
- 自己动手丰衣足食,为Zepto添加Slide动画效果
一.缘由 公司的移动端项目,采用zepto为主要框架,但是zepto毕竟是精简版的jquery,体积小了,功能自然没有这么强大,特别是动画和选择器这两块,需要我们自己去拓展. 在项目开发过程中,很多页 ...
- lodop多打印一页白纸
[错误还原]Lodop多张空白页测试2 [错误还原]Lodop多出空白页测试 http://blog.sina.com.cn/s/blog_157ebf1370102wta1.html 上面这个链接是 ...
- [Apple开发者帐户帮助]二、管理你的团队(1)邀请团队成员
组织可以选择向其开发团队添加其他人员.如果您已加入Apple开发者计划,您将在App Store Connect中管理团队成员.有关详细信息,请转到在App Store Connect帮助中添加用户. ...
- HTML中常用的颜色词汇
white (白色). black(黑色) . blue(蓝色) . green(绿色) .red(红色) .yellow(黄色) . pink(粉色).gray(灰色).brown(棕色). gre ...
- xcode制作越狱后ipa安装文件
正常情况下发布测试版给用户需要问到对方设备ID并添加到开发者证书里去感觉有点麻烦,如果是已越狱过的机器可以使用xcode制作ipa文件,并直接用itunes同步进去,这样方便多了. 将运行目标选为iO ...
- Spring boot (12) tomcat jdbc连接池
默认连接池 tomcat jdbc是从tomcat7开始推出的一个连接池,相比老的dbcp连接池要优秀很多,spring boot将tomcat jdbc作为默认的连接池,只要在pom.xml中引入了 ...
- layer的基本使用
layer是layui独立出来的一个弹出层模块 <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...