poj 1459 网络流问题`EK
Time Limit: 2000MS | Memory Limit: 32768K | |
Total Submissions: 24930 | Accepted: 12986 |
Description

An example is in figure 1. The label x/y of power station u shows that p(u)=x and pmax(u)=y. The label x/y of consumer u shows that c(u)=x and cmax(u)=y. The label x/y of power transport line (u,v) shows that l(u,v)=x and lmax(u,v)=y.
The power consumed is Con=6. Notice that there are other possible
states of the network but the value of Con cannot exceed 6.
Input
are several data sets in the input. Each data set encodes a power
network. It starts with four integers: 0 <= n <= 100 (nodes), 0
<= np <= n (power stations), 0 <= nc <= n (consumers), and 0
<= m <= n^2 (power transport lines). Follow m data triplets
(u,v)z, where u and v are node identifiers (starting from 0) and 0 <=
z <= 1000 is the value of lmax(u,v). Follow np doublets (u)z, where u is the identifier of a power station and 0 <= z <= 10000 is the value of pmax(u).
The data set ends with nc doublets (u)z, where u is the identifier of a
consumer and 0 <= z <= 10000 is the value of cmax(u).
All input numbers are integers. Except the (u,v)z triplets and the (u)z
doublets, which do not contain white spaces, white spaces can occur
freely in input. Input data terminate with an end of file and are
correct.
Output
each data set from the input, the program prints on the standard output
the maximum amount of power that can be consumed in the corresponding
network. Each result has an integral value and is printed from the
beginning of a separate line.
Sample Input
2 1 1 2 (0,1)20 (1,0)10 (0)15 (1)20
7 2 3 13 (0,0)1 (0,1)2 (0,2)5 (1,0)1 (1,2)8 (2,3)1 (2,4)7
(3,5)2 (3,6)5 (4,2)7 (4,3)5 (4,5)1 (6,0)5
(0)5 (1)2 (3)2 (4)1 (5)4
Sample Output
15
6
Hint
Source
题意:
给几个发电站,给几个消耗站,再给几个转发点。
发电站只发电,消耗站只消耗电,转发点只是转发电,再给各个传送线的传电能力。
问你消耗站能获得的最多电是多少。
思路:增加一个超级源点,和超级汇点。。把所给的发电站都和超级源点相连,把所给的消耗战都和超级汇点相连。。用EK求最大流。
#include<stdio.h>
#include<string.h>
#include<queue>
#include<iostream>
#include<algorithm>
using namespace std;
int start,end;
int edge[][];
bool vis[];
int low[],head[]; int bfs(){
memset(head,-,sizeof(head));
memset(vis,false,sizeof(vis));
memset(low,-,sizeof(low));
head[start]=;
vis[start]=true;
low[start]=0x7fffffff;
queue<int>q;
q.push(start) ;
while(!q.empty()){
int u=q.front();
q.pop();
for(int i=start;i<=end;i++){
if(!vis[i]&&edge[u][i]){
head[i]=u;
vis[i]=true;
low[i]=min(low[u],edge[u][i]);
q.push(i);
}
} }
if(low[end]!=-)
return low[end];
else
return ;
} int getmax(){
int total=;
int minflow;
while(minflow=bfs()){
for(int i=end;i!=start;i=head[i]){
edge[head[i]][i]-=minflow;
edge[i][head[i]]+=minflow; }
total+=minflow;
}
return total;
} int main(){
int n,np,nc,m;
while(scanf("%d%d%d%d",&n,&np,&nc,&m)!=EOF){
int u,v,w;
memset(edge,,sizeof(edge));
for(int i=;i<=m;i++){
scanf(" (%d,%d)%d",&u,&v,&w);
edge[u+][v+]+=w;
}
for(int i=;i<=np;i++){
scanf(" (%d)%d",&u,&w);
edge[][u+]+=w;
}
for(int i=;i<=nc;i++){
scanf(" (%d)%d",&v,&w);
edge[v+][n+]+=w;
}
start=;
end=n+;
int ans=getmax();
printf("%d\n",ans);
}
return ;
}
poj 1459 网络流问题`EK的更多相关文章
- 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) ...
- 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 ...
- Power Network POJ - 1459 网络流 DInic 模板
#include<cstring> #include<cstdio> #define FOR(i,f_start,f_end) for(int i=f_startl;i< ...
- poj 1459(网络流)
Power Network Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 26688 Accepted: 13874 D ...
- POJ 1459 Power Network / HIT 1228 Power Network / UVAlive 2760 Power Network / ZOJ 1734 Power Network / FZU 1161 (网络流,最大流)
POJ 1459 Power Network / HIT 1228 Power Network / UVAlive 2760 Power Network / ZOJ 1734 Power Networ ...
- poj 1459 多源多汇点最大流
Sample Input 2 1 1 2 (0,1)20 (1,0)10 (0)15 (1)20 7 2 3 13 (0,0)1 (0,1)2 (0,2)5 (1,0)1 (1,2)8 (2,3)1 ...
- 网络流之最大流EK --- poj 1459
题目链接 本篇博客延续上篇博客(最大流Dinic算法)的内容,此次使用EK算法解决最大流问题. EK算法思想:在图中搜索一条从源点到汇点的扩展路,需要记录这条路径,将这条路径的最大可行流量 liu 增 ...
- Poj(1459),最大流,EK算法
题目链接:http://poj.org/problem?id=1459 Power Network Time Limit: 2000MS Memory Limit: 32768K Total Su ...
随机推荐
- python基本使用时常见错误
python基本使用时常见错误 字符编码错误 如果要学习计算机编程语言,首先就要搞懂字符编码,否则在以后的学习过程中,将会是一场噩梦.在一开始使用的时候,我就遇到了很多的关于字符编码的问题,做个简单的 ...
- 一篇RxJava友好的文章(一)
转载请标明出处: http://blog.csdn.net/forezp/article/details/52886700 本文出自方志朋的博客 Rxjava在目前的开发中已经是如火如荼,非常的流行, ...
- linux数据库copy方法
相信大多数程序员都会遇到数据库copy的问题,下面就总结几种常见的方法,针对有mysql基础的同学参考 方法一:利用sqlyog的copy database的功能,如图 这种最简单,速度比较慢: 方法 ...
- udp回显客户端发送的数据
这里让客户端给服务端发送的数据被服务端自动发回来 客户端: import socket client_socket = socket.socket(socket.AF_INET, socket.SOC ...
- Shell学习——列出当前路径下所有目录
1.ls -d */[root@client02 ~]# ls -d */Desktop/ Documents/ Downloads/ jq-1.5/ Music/ Pictures/ Public/ ...
- Python类与对象--基础
## 类 - 具体事物的抽象和总结,是事物的共性,由属性和方法两个部分构成,比如一个Person类,有是身高.体重.肤色等属性,也有吃饭.睡觉.观察.等方法 ## 对象 - 具体的事物,单一.个体.特 ...
- python__基础 : 类的 __slots__ 方法
实例在创建出来之后,可以动态的添加属性和方法, 那如果想要限制添加的实例属性,可以用一下 __slots__ 这个东西: class Test(object): __slots__ = ('name' ...
- 浏览器进程/线程模型及JS运行机制
浏览器是多进程的,有一个主控进程,以及每一个tab页面都会新开一个进程(某些情况下多个tab会合并进程). 进程可能包括主控进程,插件进程,GPU,tab页(浏览器内核)等等. Browser进程:浏 ...
- python系列4之装饰器
目录 递归算法解析 冒泡排序解析 装饰器解析 一. 递归 1. 递归的定义 递归(Recursion),又成为递回,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法.递归一词还较长用于描述以 ...
- PAT (Basic Level) Practice 1023 组个最小数
个人练习 给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的 ...