拆点,套模板。

详情见代码。

//
// main.cpp
// hdu_4289
//
// Created by Luke on 16/8/29.
// Copyright © 2016年 Luke. All rights reserved.
//
//hdu-4289
#include <iostream>
#include <vector>
#include <queue>
#define N 500 //开两倍大小多一些
#define INF 0x3f3f3f3f
#define LL long long int
using namespace std;
int n,m;//点边
struct Node
{
int to;
LL cap;
unsigned long rev;
};
LL Min(LL a,LL b)
{
return a>b?b:a;
}
vector<Node> g[N];
int level[N];//用来存放bfs查找最短路的标号
int itor[N];//弧优化
void bfs(LL now)//预先进行广度优先搜索,避免dfs中大量无效查找
{
fill(level,level+(n<<)+,-);//初始化为-1
level[now]=;
queue<LL> q;
q.push(now);
while(!q.empty())
{
now=q.front(),q.pop();
for(int i=;i<g[now].size();i++)
{
Node &e=g[now][i];
if(e.cap>&&level[e.to]<)
level[e.to]=level[now]+,q.push(e.to);//迭代标号
}
}
}
LL dfs(LL now,LL en,LL f)
{
if(now==en)
return f;
for(int &i=itor[now];i<g[now].size();i++)//弧优化,用&迭代标号,使每次查找边跳过查找过的边
{
Node &e=g[now][i];
if(e.cap>&&level[e.to]>level[now])//如果level不满足肯定不需要查找
{
LL temp=dfs(e.to,en,Min(f,e.cap));
if(temp>)
{
e.cap-=temp;
g[e.to][e.rev].cap+=temp;
return temp;
}
}
}
return ;
}
void addEdge(int from,int to,LL cap)
{
g[from].push_back((Node){to,cap,g[to].size()});
g[to].push_back((Node){from,,g[from].size()-});
}
void ini()
{
for(int i=;i<=(n<<)+;i++)
g[i].clear();
//fill(used,used+n+1,0);
}
LL solve(LL s,LL en)
{
LL ans=;
while()
{
bfs(s);
if(level[en]<)//最短路未查找到路径,返回
return ans;
fill(itor,itor+(n<<)+,);
LL d;
while((d=dfs(s,en,INF))>)
ans+=d;
}
return ans;
}
int main(int argc, const char * argv[]) {
cin.sync_with_stdio(false);
while(cin>>n>>m)
{//本题权值在端点处,把点拆分成线段
ini();
LL s,e;
int num,num2;
cin>>s>>e;
e+=n;
for(int i=;i<=n;i++)
cin>>num,addEdge(i, i+n, num),addEdge(i+n,i,num);
for(int i=;i<m;i++)
cin>>num>>num2,addEdge(num+n, num2, INF),addEdge(num2+n,num,INF);//这里反向加边时一定要注意始末位置
cout<<solve(s,e)<<endl;
}
return ;
}

hdu-4289 最大流Dinic模板题的更多相关文章

  1. HDU 1532 Drainage Ditches(网络流模板题)

    题目大意:就是由于下大雨的时候约翰的农场就会被雨水给淹没,无奈下约翰不得不修建水沟,而且是网络水沟,并且聪明的约翰还控制了水的流速, 本题就是让你求出最大流速,无疑要运用到求最大流了.题中m为水沟数, ...

  2. hdu 4289 最大流拆点

    大致题意:     给出一个又n个点,m条边组成的无向图.给出两个点s,t.对于图中的每个点,去掉这个点都需要一定的花费.求至少多少花费才能使得s和t之间不连通. 大致思路:     最基础的拆点最大 ...

  3. HDU 2222(AC自动机模板题)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2222 题目大意:多个模式串.问匹配串中含有多少个模式串.注意模式串有重复,所以要累计重复结果. 解题 ...

  4. HDU 5521.Meeting 最短路模板题

    Meeting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  5. HDU 1711 - Number Sequence - [KMP模板题]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Time Limit: 10000/5000 MS (Java/Others) Memory L ...

  6. HDU 2544 最短路(模板题——Floyd算法)

    题目: 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你 ...

  7. HDU 3966 Aragorn's Story(模板题)【树链剖分】+【线段树】

    <题目链接> 题目大意: 给定一颗带点权的树,进行两种操作,一是给定树上一段路径,对其上每个点的点权增加或者减少一个数,二是对某个编号点的点权进行查询. 解题分析: 树链剖分的模板题,还不 ...

  8. HDU 1711Number Sequence【KMP模板题】

    <题目链接> 题目大意: 意思是给出两个串,找出匹配串在模式串中的位置. 解题分析: KMP算法模板题. #include <cstdio> #include <cstr ...

  9. HDU 1114 Piggy-Bank(完全背包模板题)

    完全背包模板题 #include<cstdio> #include<cstring> #include<algorithm> using namespace std ...

随机推荐

  1. jstack生成的Thread Dump日志结构解析

    1 第一部分:Full thread dump identifier 2 第二部分:Java EE middleware, third party & custom application T ...

  2. 限制 input 输入框只能输入纯数字

    oninput = "value=value.replace(/[^\d]/g,'')"

  3. python webdriver api-上传文件的三种方法

    上传文件: 第一种方式,sendkeys(),最简单的 #encoding=utf-8 from selenium import webdriver import unittest import ti ...

  4. 2018-2019-2 20165209 《网络对抗技术》Exp7: 网络欺诈防范

    2018-2019-2 20165209 <网络对抗技术>Exp7: 网络欺诈防范 1 基础问题回答和实验内容 1.1基础问题回答 (1)通常在什么场景下容易受到DNS spoof攻击. ...

  5. APP开发项目思维导图

    APP开发项目思维导图 下载思维导图:APP开发项目.xmind.zip --------------------------------------- APP开发项目 app项目标记: 未启动 功能 ...

  6. CSS前叙

    1 css是什么?层叠样式表,修饰网页结构2 如何去使用css?a.在html网页中,加入一个style标签,在这个style标签里面写css代码b.可以直接把style里面的代码放到一个单独的文件中 ...

  7. GDPR给安全的影响

    违反GDPR的代价过于巨大,因而你不得不为那些预料不到的后果考虑,而且因为无法使用Whois数据,无形中也扩大了威胁界面.因为GDPR的存在,可供黑客入侵的威胁界面显著增长,不是增加了一点点,而是翻了 ...

  8. 2018 Java线程热门面试题,你知道多少?

    面试,难还是不难?取决于面试者的底蕴(气场+技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想上的碰撞和博弈.其实你只需要搞清楚一个逻辑:“面试官为什么会这样问?他 ...

  9. bzoj1647 / P1985 [USACO07OPEN]翻转棋

    P1985 [USACO07OPEN]翻转棋 其实我们只要枚举第一行的状态,后面的所有状态都是可以唯一确定的. 用二进制枚举灰常方便 #include<iostream> #include ...

  10. finedb(内置的HSQL数据库)迁移数据到MySQL

    finedb(内置的HSQL数据库)迁移数据到MySQL 1. 前言 在FineBI中,决策平台的数据(用户.角色.组织机构.权限等信息)是存储在finedb数据库中的,默认情况下finedb是一个内 ...