最大流模版 EK

EK算法基于增广路的思想,易于理解,但由于低效并不被经常使用

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <queue>
using namespace std;
const int MAXN=10005,MAXM=100005;
int n,m,s,flow,t,nume,head[MAXN],delta[MAXN],pre[MAXN];
queue<int> q;
struct edge{int to,nxt,cap,flow;
}e[MAXM<<1];
void adde(int from,int to,int cap){e[++nume].to=to;e[nume].cap=cap;e[nume].flow=0;e[nume].nxt=head[from];head[from]=nume;
}
int init(){int rv=0,fh=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-') fh=-1;c=getchar();}while(c>='0'&&c<='9'){rv=(rv<<1)+(rv<<3)+c-'0';c=getchar();}return fh*rv;
}
int main(){n=init();m=init();s=init();t=init();for(int i=1;i<=m;i++){int u=init(),v=init(),cap=init();adde(u,v,cap);adde(v,u,0);}while(1){memset(delta,0,sizeof(delta));while(!q.empty()) q.pop();q.push(s);delta[s]=0x3f3f3f3f;pre[s]=0;while(!q.empty()){int u=q.front();q.pop();for(int i=head[u];i;i=e[i].nxt){int v=e[i].to;if(!delta[v]&&e[i].flow<e[i].cap){delta[v]=min(delta[u],e[i].cap-e[i].flow);pre[v]=i;q.push(v);}}if(delta[t]) break;}if(!delta[t]) break;for(int i=pre[t];i;i=pre[e[((i-1)^1)+1].to]){e[i].flow+=delta[t];e[((i-1)^1)+1].flow-=delta[t];}flow+=delta[t];}printf("%d\n",flow);
}

转载于:https://www.cnblogs.com/Mr-WolframsMgcBox/p/8306371.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251083.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Restrictions查询用法

Restrictions查询用法 HQL运算符 QBC运算符 含义 Restrictions.eq() 等于equal <> Restrictions.ne() 不等于not equal > Restrictions.gt() 大于greater than > Restrictions.ge() 大于等于greater than or equal < Restrictions.lt() 小…

chrome调试

技术拓展直播课8 按chrome的官方文档 长按刷新 清除缓存&#xff08;不一定好使&#xff09; Ctrl f 查找类 console控制台见b站 bilibili source面板直接打断点 效果和debugger一样 单步调试 进入到函数的下一步 网速 no throttling 是否需要过滤 domcontentloaded d…

es6 --- promise和async/await的区别

首先需要了解async函数: async是Generator函数的语法糖: // 使用Generator依次读取两个文件 var fs require(fs); var readFile function (fileName) {return new Promise(function (resolve, reject) {fs.readFile(filename, function(error, data) {if (error) return re…

Ueditor百度编辑器中的 setContent()方法的使用

百度编辑器Ueditor所提供的setContent()方法作用是&#xff1a;设置或者改变编辑器里面的文字内容或html内容 函数说明&#xff1a;setContent(string,boolean); 参数string 是需要设置到编辑器里面的内容&#xff0c;可以含有HTML代码&#xff0c;最后插入到编辑器中的内容是经…

小程序UI

从input组件说起 <input maxlength"10" placeholder"最大输入长度10" /> <div id"wrapper" disabled$"{{disabled}}">\n <p id"placeholder" class$"{{_getPlaceholderClass(placeholderClass)}}"…

61-1 认识webpack

认识webpack 面向过程开发的不便引入外部js执行顺序面向对象开发 加载多个文件耗时更多 增加了http请求 引入过多js变量来源不明 优化 使用前先import 但使用import语法需要借助工具webpack翻译为浏览器可以解析的语法安装node自动携带npmwebpack若没有全局安装 需要使用npx…

css font简写

一、字体属性主要包括下面几个 font-family&#xff0c;font-style&#xff0c;font-variant&#xff0c;font-weight&#xff0c;font-size&#xff0c;fontfont-family&#xff08;字体族&#xff09;: “Arial”、“Times New Roman”、“宋体”、“黑体”等;font-style&…

javascript --- 原生的拖拽功能实现

准备一个方块: <style>.drag{background-color:#aaf;position:absolute;} </style> <div class"drag" style"width:100px;height:100px;top:0;left:0"></div>监听鼠标的按住事件: let dragDiv document.getElementsByClassName…

web安全学习-验证机制存在的问题

验证机制是应用程序防御恶意攻击的中心机制。它处于防御未授权的最前沿&#xff0c;如果用户能够突破那些防御&#xff0c;他们通常能够控制应用程序的全部功能&#xff0c;自由访问其中的数据。缺乏安全稳定的验证机制&#xff0c;其他核心安全机制&#xff08;如回话管理和访…

ES5-拓展 原型链、继承、类

Symbol不是构造函数 Object不是原型是实例对象 他的构造器继承原型上的构造器 undefined是未定义 null是空指针 一、原型链 1. 函数也是实例对象 2. 构造函数Object是由Function构造出来的 3. 有一种说法是&#xff0c;原型链的终点是null Object.prototype.__proto__指向nul…

Mysql中各种与字符编码集(character_set)有关的变量含义

mysql涉及到各种字符集&#xff0c;在此做一个总结。 字符集的设置是通过环境变量来设置的&#xff0c;环境变量和linux中的环境变量是一个意思。mysql的环境变量分为两种&#xff1a;session和global。session变量是仅在这次会话红中有效&#xff0c;在mysql中&#xff0c;一次…

spring boot 加载application配置文件

这就要注意了 转载于:https://www.cnblogs.com/huochaihe/p/9397849.html

javascript --- 防抖与节流

先做一个监听鼠标移动的base: <style>#content{height:150px;width:200px;text-align:center;color:#fff;background-color:#ccc;font-size: 70px;} </style> <div id"content"></div> <script>let content document.getElementById…

DOM-9 【实战】模块化开发Todolist(面向过程)

模块化分类 按dom结构划分按功能划分&#xff08;组件化开发&#xff09; 模块与模块之间可以相互依赖&#xff0c;但互不影响 模块&#xff1a;IIFE赋值给一个变量&#xff0c;当引入模块时&#xff0c;IIFE会立即执行 单标签闭合才符合W3C规范display、position放在上面css是…

mysql在linux下的安装(5.7版本以后)

1.添加mysql组和mysql用户&#xff0c;用于设置mysql安装目录文件所有者和所属组。 ①groupadd mysql ②useradd -r -g mysql mysql 2.将二进制文件解压到指定的安装目录&#xff0c;通用的/usr/local ①解压二进制文件&#xff0c; tar -zxvf /usr/local/mysql-5.7.13-linux-…

Kali Linux2018 上安装open-vm-tools实现虚拟机交互

最新的kali linux2018已经不再支持原有的vmwaretools&#xff0c;即使安装了也不能实现主机与客户机之间的交互&#xff08;比如从主机复制文件到客户机&#xff09;。安装open-vm-tools替代vm tools能够完美实现“自动适应客户机”&#xff08;即自动适应客户机的分辨率&#…

DOM-11 【兼容】鼠标行为坐标系、pageXY封装、拖拽函数封装

鼠标行为 e.属性含义相关属性clientX/Y鼠标位置相对于当前可视区域的坐标x/y&#xff08;FF火狐部分版本不支持&#xff09;pageX/Y(IE9以下不支持)鼠标位置相对于当前文档的坐标layerX/Y (IE11以下同clientX/Y)screenX/Y鼠标位置相对于显示器屏幕的坐标offsetX/Y鼠标位置相对…

java --replaceAll方法

public void abc(){String str "aabbccdd";str str.replaceAll("\\d","数字")&#xff1b;system.out.println("str"); } 转载于:https://www.cnblogs.com/gjack/p/8325778.html

mysql分页优化

一般分页这样写 select * from goods limit 50,20 从50行开始取20行&#xff0c;即第51行到70行 当数据量少当时候这样并没有什么问题&#xff0c;但是如果 select * from goods limit 1000000,20 查询耗时骤升。 这种方式是查询出100000020行&#xff0c;再取20行&#xff0c;…

DOM-10 面向对象开发Todolist

将插件配置项写在html的div里&#xff0c;data-config自定义属性&#xff0c;外单引号&#xff0c;内双引号&#xff08;内部是JSON字符串&#xff09; <div class"todo-wrap" data-config{"plusBtn":"j-show-input","inputArea":…