题意:现在有m个池塘(从1到m开始编号,1为源点,m为汇点),及n条有向水渠,给出这n条水渠所连接的点和所能流过的最大流量,求从源点到汇点能流过的最大流量

Dinic

 #include<iostream>
#include<cstring>
#include<algorithm>
#include <cstdio>
#include <queue>
using namespace std;
const int N = ;
const int INF = 0x3f3f3f3f;
int m,n,tot;
int head[N],level[N];
struct node
{
int t,next,w;
}edge[N<<]; void init()
{
tot=-;
memset(head,-, sizeof(head));
} void add(int s,int t,int w)
{
edge[++tot].t=t,edge[tot].w=w,edge[tot].next=head[s],head[s]=tot;
edge[++tot].t=s,edge[tot].w=,edge[tot].next=head[t],head[t]=tot;
} bool bfs()
{
memset(level,,sizeof(level));
queue<int> q;
while(!q.empty())q.pop();
q.push();
level[]=;
while(q.size())
{
int u=q.front();q.pop();
for(int i=head[u];i!=-;i=edge[i].next)
{
if(edge[i].w>&&level[edge[i].t]==)
{
q.push(edge[i].t);
level[edge[i].t]=level[u]+;
}
if(level[m]!=)return ;
}
}
return ;
} int dfs(int s,int t, int flow)
{
if(s==t)return flow;
for(int i=head[s];i!=-;i=edge[i].next)
{
if(edge[i].w>&&level[edge[i].t]==level[s]+)
{
int k = dfs(edge[i].t,t,min(flow,edge[i].w));
if(k>)
{
edge[i].w-=k;
edge[i^].w+=k;
return k;
}
}
}
return ;
}
//
void dinic()
{
int flow=;
while(bfs()) // 寻找最短增广路,分层图
{
int f=;
while((f=dfs(,m,INF))>)flow+=f; // 在分层图上增广
}
cout<<flow<<endl;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
init();
while(n--)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
add(a,b,c);
}
dinic();
}
return ;
}

建图的另一种方法,上面有两种邻接表的方法,一种是单纯用数组模拟,可以运用异或操作反向边;另一个是vector模拟,反向边做特别记录

 struct edge
{
int to,cap,rev;// 反向边
};
vector<edge> g[maxn];
int level[maxn]; void add_edge(int from,int to,int cap)
{
//最后一个元素是反向边的索引,便于快速查找
g[from].push_back((edge){to,cap,g[to].size()});
g[to].push_back((edge){from,,g[from].size()-});
}

Ford_Fulkerson

POJ 1273 Drainage Ditches【最大流模版】的更多相关文章

  1. poj 1273 Drainage Ditches 最大流入门题

    题目链接:http://poj.org/problem?id=1273 Every time it rains on Farmer John's fields, a pond forms over B ...

  2. POJ 1273 - Drainage Ditches - [最大流模板题] - [EK算法模板][Dinic算法模板 - 邻接表型]

    题目链接:http://poj.org/problem?id=1273 Time Limit: 1000MS Memory Limit: 10000K Description Every time i ...

  3. Poj 1273 Drainage Ditches(最大流 Edmonds-Karp )

    题目链接:poj1273 Drainage Ditches 呜呜,今天自学网络流,看了EK算法,学的晕晕的,留个简单模板题来作纪念... #include<cstdio> #include ...

  4. POJ 1273 Drainage Ditches 最大流

    这道题用dinic会超时 用E_K就没问题 注意输入数据有重边.POJ1273 dinic的复杂度为O(N*N*M)E_K的复杂度为O(N*M*M)对于这道题,复杂度是相同的. 然而dinic主要依靠 ...

  5. poj 1273 Drainage Ditches_最大流模版

    #include <iostream> #include<cstdio> #include<queue> #include<cstring> using ...

  6. POJ 1273 Drainage Ditches | 最大流模板

    #include<cstdio> #include<algorithm> #include<cstring> #include<queue> #defi ...

  7. POJ 1273 Drainage Ditches(最大流Dinic 模板)

    #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n, ...

  8. poj 1273 Drainage Ditches(最大流)

    http://poj.org/problem?id=1273 Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Subm ...

  9. POJ 1273 Drainage Ditches (网络最大流)

    http://poj.org/problem? id=1273 Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Sub ...

  10. poj 1273 Drainage Ditches【最大流入门】

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 63924   Accepted: 2467 ...

随机推荐

  1. 学习awk命令的使用

    作者:邓聪聪 awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 awk处理过程: 依次对每一行进行处理,然后输出 awk命令形式: ...

  2. requests库入门10-超时,错误与异常

    在实际发布到生产上的接口测试代码,都会加上超时的设置,当服务器超过一定时间没有响应,会报出超时异常.因为requests会自动等待响应.如果不加上超时的设置,可能脚本会一直卡在那里.. 超时设置在请求 ...

  3. Efuse--芯片存储

    1.Efuse是什么 Efuse类似于EEPROM,是一次性可编程存储器,在芯片出场之前会被写入信息,在一个芯片中,efuse的容量通常很小,一些芯片efuse只有128bit. 2.efuse的作用 ...

  4. git与eclipse集成之保存快照

    1.1. 保存快照 在个分支进行编码,然后需要紧急切换到另外一个分支进行快速修复一个问题,此时可以先将当前分支的修改进行保存快照. 在分支A进行编码,保存快照 切换到另外分支B进行修改 切换回A分支继 ...

  5. 阿里云服务器上通过Docker部署redmine

    背景:在日常工作的过程中会遇到各种各样的问题,每个问题来了之后需要花时间解决.这里就面临两个问题. 1:问题责任不明确,有时候会遇到数据库或者物理服务器的问题,这时候就需要把相应问题指派给相应的人,传 ...

  6. mysql设计表时注意事项

    说明:本文是对项目过程中的一些要求的简单汇总整理,主要是供个人本身参考... 一.表设计 1. 在创建表结构时,表名.字段需要见名知意,不采用拼音 create table  `tb_abc` (   ...

  7. Jquery简单使用

    展示:$("#id").show(); 隐藏:$("#id").hide();

  8. hadoop环境配置

    0. Hadoop源码包下载 http://mirror.bit.edu.cn/apache/hadoop/common/   1. 集群环境 Master 172.16.11.97 Slave1 1 ...

  9. 转:vw适配中使用伪类选择器遇到的问题

    地址:https://blog.csdn.net/perryliu6/article/details/80965734 在使用vue init webpack构建的项目中,一开始我准备使用rem布局, ...

  10. Confluence 6 关于统一插件管理器

    所有的组件通过 统一插件管理器(Universal Plugin Manager)进行管理,这个也被称为 UPM.UPM 可以在几乎所有的 Atlassian 应用中找到,能够提供完整同意的插件安装管 ...