POJ 1459 网络流 EK算法
题意:
2 1 1 2 (0,1)20 (1,0)10 (0)15 (1)20
2 1 1 2 表示 共有2个节点,生产能量的点1个,消耗能量的点1个, 传递能量的通道2条;
(0,1)20 (1,0)10 代表(起点,终点)最大传递的能量 (0)15 (产生能量的点)产生的最大能量
(1)20 (消费能量的点)消费的最大能量 初学网络流,我想从基础练起;就先用EK算法写一遍 这道题看似很难,但其实只要加一个源点以及汇点,让所有的产生能量的点指向源点,让所有的消费能量的点指向汇点;
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
#define N 110
#define INF 0x3f3f3f3f
#define Min(a, b) a<b?a:b
int G[N][N], pre[N]; int EK(int s, int e);
bool BFS(int s, int e); int main()
{
int point, source, dest, edge;
while(scanf("%d%d%d%d", &point, &source, &dest, &edge)!=EOF)
{
int a, b, flow, in, inflow, out, outflow;
char ch;
memset(G, 0, sizeof(G));
for(int i=0; i<edge; i++)
{
//scanf("(%d,%d)%d", &a, &b, &flow);
cin>>ch>>a>>ch>>b>>ch>>flow;
G[a+1][b+1]+=flow;
} for(int i=0; i<source; i++)
{
//scanf("(%d)%d", &out, &outflow);
cin>>ch>>out>>ch>>outflow;
G[0][out+1]+=outflow;
} for(int i=0; i<dest; i++)
{
//scanf("(%d)%d", &in, &inflow);
cin>>ch>>in>>ch>>inflow;
G[in+1][point+1]+=inflow;
} int ans=EK(0, point+1);
printf("%d\n", ans); }
return 0;
} int EK(int s, int e)
{
int maxflow=0; while(BFS(s, e))
{
int minflow=INF; for(int i=e; i!=s; i=pre[i])
minflow=Min(minflow, G[pre[i]][i]); for(int j=e; j!=s; j=pre[j])
{
G[pre[j]][j]-=minflow;
G[j][pre[j]]+=minflow;
}
maxflow+=minflow;
} return maxflow;
} bool BFS(int s, int e)
{
memset(pre, -1, sizeof(pre)); queue<int>Q;
Q.push(s); while(Q.size())
{
int i=Q.front(); Q.pop(); if(i==e)
return true; for(int j=0; j<=e; j++)
{
if(G[i][j]&&pre[j]==-1)
{
pre[j]=i;
Q.push(j);
}
}
}
return false;
}
POJ 1459 网络流 EK算法的更多相关文章
- 最大网络流 EK 算法
网络流是什么类型的问题,看一道题目你就知道了 点击打开链接 . 默认具备图论的基本知识,网络流概念比较多,先看看书熟悉一下那些概念.比较好!一个寄出的网络最大流.EK算法写的. 这是一幅网络,求S ...
- 网络流EK算法模板
\(EK\)算法的思想就是每一次找一条增广路进行增广. 注意几个点: 存图时\(head\)数组要设为\(-1\). 存图的代码是这样的: inline void add(int u, int v, ...
- HDU1532 Drainage Ditches 网络流EK算法
Drainage Ditches Problem Description Every time it rains on Farmer John's fields, a pond forms over ...
- Drainage Ditches(网络流(EK算法))
计算最大流,EK算法模板题. #include <stdio.h> #include <string.h> #include <queue> using names ...
- poj 1459 网络流问题`EK
Power Network Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 24930 Accepted: 12986 D ...
- Power Network POJ - 1459 [网络流模板]
http://poj.org/problem?id=1459 嗯,网络流模板...多源点多汇点的图,超级汇点连发电厂,用户连接超级汇点 Status Accepted Time 391ms Memor ...
- Power Network (poj 1459 网络流)
Language: Default Power Network Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 23407 ...
- 网络流Ek算法
例题: Flow Problem HDU - 3549 Edmonds_Karp算法其实是不断找增广路的过程. 但是在找的过程中是找"最近"的一天增广路, 而不是找最高效的一条增 ...
- POJ 3281 网络流dinic算法
B - Dining Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit S ...
随机推荐
- CMakeList相关
cmake使用示例与整理总结 http://blog.csdn.net/wzzfeitian/article/details/40963457/ 对应的demo:https://github.com/ ...
- 转:: 刺鸟:用python来开发webgame服务端(5)
来源:http://ciniao.me/article.php?id=19 --------------- 刺鸟原创文章,转载请注明出处 在前面的文章中,我们已经开始了不少逻辑功能的开发,在这期 ...
- UIAlertController custom font, size, color
本文转载至 http://stackoverflow.com/questions/26460706/uialertcontroller-custom-font-size-color up vote2d ...
- 实现 iPhone 电子书的分页显示功能的代码
本文转载至 http://blog.csdn.net/zaitianaoxiang/article/details/6650497 原文地址:实现 iPhone 电子书的分页显示功能的代码作者:醉吻 ...
- [Spring Data MongoDB]学习笔记--注册一个Mongo实例
1. 通过Java based bean metadata @Configuration public class AppConfig { public @Bean Mongo mongo() thr ...
- <转> python的垃圾回收机制
Python的GC模块主要运用了“引用计数”(reference counting)来跟踪和回收垃圾.在引用计数的基础上,还可以通过“标记-清除”(mark and sweep)解决容器对象可能产生的 ...
- SharePoint服务器端对象模型 之 访问网站和列表数据(Part 3)
(三)视图 与传统意义上的数据视图类似,SharePoint中的列表视图指定了列表中数据的筛选条件.排序条件.分组条件.显示栏/字段.显示条目数.显示样式等内容.在SharePoint中,使用SPVi ...
- coursera 《现代操作系统》
什么是独占设备技术?为什么说 “SPOOLing不是独占设备的”? 百度百科没有解释,从教材中找到了: 第二章 取数指令 load To load a value from memory, you ...
- undefined let 作用域
const o = {uid:123,pid:'wwww'}const wxPayNotifyUrlBizInfo = (o) => { // TODO json let s = '' for ...
- app开发公司排名哪家强?看App Annie给出的答案
app开发公司排名哪家强?这个答案不好定义,我们从第三方权威平台数据来看吧.App Annie在<全球移动应用市场2016年回顾>报告中从全球每月活跃用户数.全球下载量.全球收入等几个维度 ...