网络流模板(模板题:POJ1273)
模板题:POJ1273
EK:
#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n,m,jy,map[305][305],c[305][305],a[305],p[305];
bool vis[305];
int M(int e)
{
int f=0;
queue<int>q;
while(1){
memset(a,0,sizeof(a));
memset(vis,0,sizeof(vis));
a[1]=0x3fffffff;vis[1]=1;q.push(1);
while(!q.empty()){
jy=q.front();q.pop();
for(int i=1;i<=e;i++){
if(!vis[i]&&map[jy][i]-c[jy][i]>0)
{
vis[i]=1;
a[i]=min(a[jy],map[jy][i]-c[jy][i]);
p[i]=jy;
q.push(i);
}
}
}
if(a[e]==0)break;
for(int i=e;i!=1;i=p[i]){
c[i][p[i]]-=a[e];
c[p[i]][i]+=a[e];
}
f+=a[e];
}
return f;
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(map,0,sizeof(map));
memset(c,0,sizeof(c));
memset(p,0,sizeof(p));
for(int i=1;i<=n;i++)
{
register int xx,yy,ee;
scanf("%d%d%d",&xx,&yy,&ee);
map[xx][yy]+=ee;
}
printf("%d\n",M(m));
}
}
Dinic:
#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 444
int tot,next[N],first[N],w[N],v[N],n,m,ch[N];
void add(int from,int to,int weight){
v[tot]=to;w[tot]=weight;
next[tot]=first[from];
first[from]=tot++;
}
bool tell(){
memset(ch,-1,sizeof(ch));
queue<int> q;
q.push(1);ch[1]=0;
while(!q.empty()){
int t=q.front();q.pop();
for(int i=first[t];~i;i=next[i])
if(w[i]&&ch[v[i]]==-1)
q.push(v[i]),ch[v[i]]=ch[t]+1;
}
return ch[n]!=-1;
}
int zeng(int a,int b){
if(a==n)return b;
int r=0;
for(int i=first[a];~i&&b>=r;i=next[i])
if(ch[a]+1==ch[v[i]]&&w[i]){
int t=zeng(v[i],min(b-r,w[i]));
w[i]-=t;w[i^1]+=t;r+=t;
}
if(!r)ch[a]=-1;
return r;
}
int dinic(){
int ans=0,jy;
while(tell())while(jy=zeng(1,0x3fffffff))ans+=jy;
return ans;
}
int main()
{
while(scanf("%d%d",&m,&n)!=EOF){
memset(first,-1,sizeof(first));
register int xx,yy,zz;
tot=0;
for(int i=1;i<=m;i++){
scanf("%d%d%d",&xx,&yy,&zz);
add(xx,yy,zz);add(yy,xx,0);
}
printf("%d\n",dinic());
}
}
网络流模板(模板题:POJ1273)的更多相关文章
- 网络流——SAP模板
//网络流SAP模板,复杂度O(N^2*M) //使用前调用init(源点,汇点,图中点的个数),然后调用add_edge()加边 //调用getflow得出最大流 #define N 55 #def ...
- POJ 1273 Drainage Ditches (网络流Dinic模板)
Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover ...
- C++面向对象编程之成员模板、模板特化、偏特化和模板模板参数
1.成员模板 理解起来就是类是模板类,他里面的成员函数又是个模板函数 上图例子:用派生类构造父类 2.模板特化 就是在类模板泛化后写特化的类,在template<>里不绑定类型,而在类后面 ...
- [C++基础]那些容易被混淆的概念:函数/数组指针-指针函数/数组,类/函数模板-模板类/函数
函数指针-指针函数 函数指针的重点是指针.表示的是一个指针,它指向的是一个函数.eg: int (*pf)(); 指针函数的重点是函数.表示的是一个函数,它的返回值是指针.eg: int* fun() ...
- ACM算法模板 · 一些常用的算法模板-模板合集(打比赛专用)
ACM算法模板 · 一些常用的算法模板-模板合集(打比赛专用)
- hdu 2987最大权闭合图模板类型题
/* 最大权闭合图模板类型的题,考验对知识概念的理解. 题意:如今要辞退一部分员工.辞退每个员工能够的到一部分利益(能够是负的),而且辞退员工,必须辞退他的下属.求最大利益和辞退的最小人数. 最大权闭 ...
- 最小费用最大流模板 poj 2159 模板水题
Going Home Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15944 Accepted: 8167 Descr ...
- PKU 3281 Dining 网络流 (抄模板)
题意: 农夫约翰为他的牛准备了F种食物和D种饮料.每头牛都有各自喜欢的食物和饮料,而每种食物或饮料只能分配给一头牛.最多能有多少头牛可以同时得到各自喜欢的食物和饮料? 思路: 用 s -> 食物 ...
- 经典网络流题目模板(P3376 + P2756 + P3381 : 最大流 + 二分图匹配 + 最小费用最大流)
题目来源 P3376 [模板]网络最大流 P2756 飞行员配对方案问题 P3381 [模板]最小费用最大流 最大流 最大流问题是网络流的经典类型之一,用处广泛,个人认为网络流问题最具特点的操作就是建 ...
随机推荐
- CAD在网页中如何得到用户自定义事件的参数?
主要用到函数说明: _DMxDrawX::CustomEventParam 得到用户自定义事件的参数. js代码实现如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
- 一个电商项目的Web服务化改造6:单元测试4步走,构造数据、执行操作、断言、回滚
最近一直在做一个电商项目,需要把原有单系统架构的项目,改造成基于服务的架构,SOA. 有点挑战,做完了,会有很大进步. 单元测试,在很早之前的文章已经介绍过. 可以在这里看到相关的 ...
- 【Codeforces 1106D】Lunar New Year and a Wander
[链接] 我是链接,点我呀:) [题意] 让你遍历n个节点,访问过的节点不操作. 如果是没有访问过的点,那就把它加到序列的末尾. 问你形成的最小字典序的序列是多少. [题解] 显然每次找最小的标号 用 ...
- ZooKeeper学习总结(1)——ZooKeeper入门介绍
1. 概述 Zookeeper是Hadoop的一个子项目,它是分布式系统中的协调系统,可提供的服务主要有:配置服务.名字服务.分布式同步.组服务等. 它有如下的一些特点: 简单 Zookeeper的核 ...
- ReatEasy+用户指南----第9章@MatrixParam
转载说明出处:http://blog.csdn.net/nndtdx/article/details/6870391 原文地址 http://docs.jboss.org/resteasy/docs/ ...
- toj 1421
题意:假如存在矩阵A,A[i][0] + A[i][1] + ...... + A[i][n - 1] == SR[i],A[0][j] + A[1][j] + ...... + A[n - 1][j ...
- C结构体里的冒号
unsigned m_ScrollType : 3; //uint型,占3bit; unsigned m_ScrollDirection ...
- <script>标签的加载解析执行
转自原文 <script>标签的加载解析执行 看了很多网上的文章,都是大同小异.总结一下.内部原理还没有搞清楚,有机会再学习. 一.<script>标签的加载解析执行顺序 ht ...
- Ambari-部署常见问题
重新启动ambari-server端后调用install.start API后返回200 导致该问题的解决办法是server在启动后没有收到agent的心跳即没有与agent建立连接,在此时进行API ...
- Android实战简易教程-第十五枪(实现ListView中Button点击事件监听)
1.main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...