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 ...
随机推荐
- 2213 Problem J
#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm& ...
- 转:python 多线程就这么简单
多线程 科技在发展,时代在进步,我们的CPU也越来越快,CPU抱怨,P大点事儿占了我一定的时间,其实我同时干多个活都没问题的:于是,操作系统就进入了多任务时代.我们听着音乐吃着火锅的不在是梦想. py ...
- 控制器post参数接收
一.post对象 1.后台c# public class TestController : ApiController { [HttpPost] public string SaveData1(Tb_ ...
- "围观"设计模式(7)--创建型之单例模式(Singleton Pattern)
单例模式,也叫单子模式,是一种经常使用的软件设计模式.在应用这个模式时,单例对象的类必须保证仅仅有一个实例存在. 很多时候整个系统仅仅须要拥有一个的全局对象.这样有利于我们协调系统总体的行为.比方在某 ...
- Oracle 逻辑体系
Oracle 逻辑体系 主题 Oracle 逻辑体系 参考资料 Oracle 逻辑体系 表空间.模式.用户.段.区.块 Oracle中的数据逻辑上存储于表空间,物理上则存储于属于表空间tabl ...
- JavaScript遍历IP段内所有IP
思路:将两个IP转换为数字进行比较,小的那个慢慢加一,直到变成大的那个IP所转换的数字,将这其中的数字再转换为IP地址即为IP段内所有的IP. //IP转数字 function ip2int(ip) ...
- 【转】【Spring实战】Spring注解配置工作原理源码解析
一.背景知识 在[Spring实战]Spring容器初始化完成后执行初始化数据方法一文中说要分析其实现原理,于是就从源码中寻找答案,看源码容易跑偏,因此应当有个主线,或者带着问题.目标去看,这样才能最 ...
- linux下安装mysql问题总结(一)mysqld_safe mysqld from pid file /usr/local/mysql/data/mysql.pid ended
linux下安装mysql数据库 linux版本:CentOS release 6.8 (Final) mysql版本:mysql-5.7.16-linux-glibc2.5-x86_64.tar.g ...
- VMware虚拟机不能联网的解决办法
Linux安装的centos系统,不能正常连接网络 1.编辑config文件 [root@localhost ~]# cd /etc/selinux [root@localhost selinux]# ...
- python面试题(六)
1 异常处理写法以及如何主动跑出异常(应用场景) try: """执行语句""" except: #异常类型 ""&qu ...