POJ 1273 Drainage Ditches【最大流模版】
题意:现在有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【最大流模版】的更多相关文章
- poj 1273 Drainage Ditches 最大流入门题
题目链接:http://poj.org/problem?id=1273 Every time it rains on Farmer John's fields, a pond forms over B ...
- POJ 1273 - Drainage Ditches - [最大流模板题] - [EK算法模板][Dinic算法模板 - 邻接表型]
题目链接:http://poj.org/problem?id=1273 Time Limit: 1000MS Memory Limit: 10000K Description Every time i ...
- Poj 1273 Drainage Ditches(最大流 Edmonds-Karp )
题目链接:poj1273 Drainage Ditches 呜呜,今天自学网络流,看了EK算法,学的晕晕的,留个简单模板题来作纪念... #include<cstdio> #include ...
- POJ 1273 Drainage Ditches 最大流
这道题用dinic会超时 用E_K就没问题 注意输入数据有重边.POJ1273 dinic的复杂度为O(N*N*M)E_K的复杂度为O(N*M*M)对于这道题,复杂度是相同的. 然而dinic主要依靠 ...
- poj 1273 Drainage Ditches_最大流模版
#include <iostream> #include<cstdio> #include<queue> #include<cstring> using ...
- POJ 1273 Drainage Ditches | 最大流模板
#include<cstdio> #include<algorithm> #include<cstring> #include<queue> #defi ...
- POJ 1273 Drainage Ditches(最大流Dinic 模板)
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n, ...
- poj 1273 Drainage Ditches(最大流)
http://poj.org/problem?id=1273 Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Subm ...
- POJ 1273 Drainage Ditches (网络最大流)
http://poj.org/problem? id=1273 Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Sub ...
- poj 1273 Drainage Ditches【最大流入门】
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 63924 Accepted: 2467 ...
随机推荐
- 利用binlogserver恢复单表实验【转】
使用场景 每次开启binlogserver 指定了mysql-bin.0000XX 后都会从该点从头进行传输一次 创建binlogserver [root@mysql-zst3 binlogserve ...
- centos6.8安装httpd后无法访问
1.打开 httpd.conf 将里面的 #ServerName localhost:80 注释去掉 2.修改SELinux状态: 1)/usr/sbin/sestatus -v ##如果S ...
- vue 不常见操作
对 v-html 的扩展操作, 问题产生背景, 在vue 项目中,用v-html渲染 html字符串,这里面包括a 标签等内容,因为某种需求,a 的默认跳转不符合要求,要经过自己定义的方法跳转. 原 ...
- LA 6893 矩阵HASH (模板)
#include<stdio.h> #include<string.h> typedef unsigned long long ULL; ; ; int test,n,m,x, ...
- Laravel 5.2 错误-----ReflectionException in compiled.php line 8572: Class App\Http\Controllers\Apih5\ZhaoshangController does not exist
测试的时候,报错了!想不到找了半天的问题,居然是个低级错误. <?php namespace App\Http\Controllers\Apih5; use Illuminate\Http\Re ...
- bootstrap 3列表单布局
<form class="form-horizontal" role="form"> <fieldset> <legend> ...
- response.setContentType()的String参数及对应类型
response.addHeader("Content-Disposition", "attachment;filename="+ filename); res ...
- linux流量异常查看哪些程序占用的
Linux下进程/程序网络带宽占用情况查看工具 -- NetHogs http://www.vpser.net/manage/nethogs.html 来自. 最后略有修改 之前VPS侦探曾 ...
- Confluence 6 增加和减少你许可证的用户数
增加你许可证的用户数 如果你使用的用户数超过你许可证允许的用户数的话,你的 Confluence 实例将会变成为只读. 只读的意思是没有用户可以创建和编辑内容,直到你的用户数满足你的许可证需求为止. ...
- Confluence 6 中样式化字体
Confluence 提供了通过层叠样式表(CSS)调整页面展示情况的能力.本页面帮助你理解如何在 Confluence 中使用一些 CSS 样式修改字体样式和字体大小. 下面的代码为自定义的字体代码 ...