网络流模板(更新中)

/*
最大流EK算法,O(V*E*E)
*/
#include<stdio.h>
#include<string.h>
#include<queue>
const int N = 205;

int n,m;
int cap[N][N],f[N][N],pre[N],rest[N];
int sNode,eNode;

void init(){
    memset(f,0,sizeof(f));
    memset(cap,0,sizeof(cap));
}

bool searchPath(){//找一条增广路
    bool vist[N]={0};
    queue<int>q;
    int u,v;
    u=sNode; vist[u]=1;
    pre[u]=u; rest[u]=1<<30;
    q.push(u);
    while(!q.empty()){
        u=q.front(); q.pop();
        for(v=1; v<=n; v++)
        if(!vist[v]&&cap[u][v]-f[u][v]>0)
        {
            vist[v]=1; pre[v]=u;
            if(cap[u][v]-f[u][v]>rest[u])
              rest[v]=rest[u];
            else
                rest[v]=cap[u][v]-f[u][v];
            if(v==eNode) return true;
            q.push(v);
        }
    }
    return false;
}
int maxflow(){
    int ans=0;
    while(searchPath()){
        ans+=rest[eNode];
        int v=eNode;
        while(v!=sNode){
            int u=pre[v];
            f[u][v]+=rest[eNode];
            f[v][u]-=rest[eNode];//给一个回流的机会
            v=u;
        }
    }
    return ans;
}
int main(){
    int a,b,c;
    while(~scanf("%d%d",&n,&m)){
        scanf("%d%d",&sNode,&eNode);
        init();
        while(m--){
            scanf("%d%d%d",&a,&b,&c);
            cap[a][b]+=c;
        }
        printf("%d\n",maxflow())
    }
}

时间: 2024-11-09 04:52:31

网络流模板(更新中)的相关文章

weeping专用模板--更新中

自己的模板 /* 二维几何 */ /* 需要包含的头文件 */ #include<cstdio> #include <cstring> #include <cmath > #include <iostream> #include <algorithm> using namespace std; /** 常用的常量定义 **/ const double INF = 1e200; const double eps = 1e-10; const dou

Icehouse版keystone配置完全详解(更新中)

本文全面解读Icehouse发行版keystone的配置文件keystone.conf [DEFAULT]admin_token=(string value)# 这是一个公知的密码,用于初始化keystone,强烈建议在生产模式中禁用,只需要在# keystone-paste.ini文件中移除AdminTokenAuthMiddleware这个pipeline即可 public_bind_host=(string value)# The IP Address of the network int

nodejs学习(持续更新中)

nodejs和express的安装什么的,网上基本都有现成的了,这里有点说下, 在较早点的版本(如3.5.0) npm install -g [email protected] 后,可以直接使用 express helloWorld创建工程, 但最新express4.0版本中将命令工具分家出来了(项目地址:https://github.com/expressjs/generator),所以我们还需要安装一个命令工具,命令如下:npm install -g express-generator ##

Windows10的周年更新中无法关闭Cortana?这里有方法

备受期待的Windows 10的周年更新中将会带来诸多新特性,包括更实用的开始菜单.Windows Ink.强化的Windows Defender,甚至还有一个无法关闭的语音助手Cortana. 目前在Windows 10系统中关闭Cortana是非常直接的,打开开始菜单,输入Cortana随后选择"Cortana和搜索设置",在设置中选择关闭就可以了.然而在Windows 10的周年更新中关闭则没有这么直观了,因为在设置选项中根本找不到这个关闭选项了. 在Windows 10的周年更

【前端】Util.js-ES6实现的常用100多个javaScript简短函数封装合集(持续更新中)

Util.js (持续更新中...) 项目地址: https://github.com/dragonir/Util.js 项目描述 Util.js 是对常用函数的封装,方便在实际项目中使用,主要内容包含:数组类.浏览器类.日期类.函数类.数学类.媒体类.节点类.对象类.字符串类.类型检测类.正则表达式类等内容. 使用方法 1. 引入Bable transpiler以保证支持ES6 <script type="javascript/text" src="./browser

在洛谷3369 Treap模板题 中发现的Splay详解

本题的Splay写法(无指针Splay超详细) 前言 首先来讲...终于调出来了55555...调了整整3天..... 看到大部分大佬都是用指针来实现的Splay.小的只是按照Splay的核心思想和原理来进行的.可能会有不妥之处,还请大佬们指出,谢谢! 那么这个题解存在的意义就是让不会敲Splay的人额...会敲Splay啦... 基本思想 数据结构 对于Splay,我定义了一个class类(当成struct就行啦...个人习惯不同啦),定义名称为“Splay”. 之后在类中,我定义了Splay

博客模板更新

博客后台 皮肤选择BlueSky 复制以下代码 禁用模板默认CSS 完成 我现在的博客模板CSS,更新中... * { margin: 0; padding: 0; list-style-type: none; list-style-image: none; } .clear { clear: both; } body, button, input, select, textarea { font: 12px/1.5 Tahoma, Arial, Helvetica, sans-serif; }

平衡树24题(更新中…)

平衡树24题(更新中-) 前言: 我写的平衡树题里不是用Treap解决的,就是用Fhq-Treap写的,还有极少数是用Splay写的. 说说这几个树的区别与优劣: Treap是编码相对来说最容易的,但是由于它的结构不能改变,以致许多题目不能实现,区间操作也不行.一般来说,Treap可以打裸题,或者作为其它算法的辅助算法. Fhq-Treap一般来说Splay能做的它都可以.编码比Splay容易,容易理解.功能强大.唯一不足的是在LCT没有Splay优秀. Splay很灵活,一般所有情况都可以处理

linux学习资料持续更新中

一.LINUX基础教程 1.老男孩系列免费视频: 1) linux高薪入门实战视频教程(第二部)老男孩linux教程 http://edu.51cto.com/course/course_id-1035-page-1.html 2) 跟着老男孩从0开始一步步实战深入学习linux运维(三) http://edu.51cto.com/lesson/id-11909.html linux学习资料持续更新中,布布扣,bubuko.com

Hello World!的各种编程语言程序(持续更新中……)

对于很多学习编程语言新手们,可能接触到的第一个程序就是"Hello World"的输出程序,笔者想在此篇简短的博文中介绍关于各种编程语言的"Hello World"输出程序. 至今,笔者仅仅接触过C++和Python两种编程语言,而且都仅仅是新手,所以此次只能写C++和Python两种语言的"Hello World"输出程序,但此篇博文会随着笔者学习的编程语言种类的增多而不断完善. 1. C++语言 #include<iostream>