POJ 1459
来源:互联网 发布:淘宝店运营工作职责 编辑:程序博客网 时间:2024/06/05 08:55
A power network consists of nodes (power stations, consumers and dispatchers) connected by power transport lines. A node u may be supplied with an amount s(u) >= 0 of power, may produce an amount 0 <= p(u) <= pmax(u) of power, may consume an amount 0 <= c(u) <= min(s(u),cmax(u)) of power, and may deliver an amount d(u)=s(u)+p(u)-c(u) of power. The following restrictions apply: c(u)=0 for any power station, p(u)=0 for any consumer, and p(u)=c(u)=0 for any dispatcher. There is at most one power transport line (u,v) from a node u to a node v in the net; it transports an amount 0 <= l(u,v) <= lmax(u,v) of power delivered by u to v. Let Con=Σuc(u) be the power consumed in the net. The problem is to compute the maximum value of Con.
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
Output
Sample Input
2 1 1 2 (0,1)20 (1,0)10 (0)15 (1)207 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
156
Hint
Source
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>using namespace std;#define maxn 100+5#define inf 0x7fffffffint n,np,nc,m;int s,t,edge[maxn][maxn],pre[maxn];int EK(){ int minflow,maxflow = 0; while(1) { memset(pre, 0, sizeof(pre)); minflow = inf; queue<int> q; q.push(s); while(!q.empty()) //BFS寻找增广路 { int u = q.front(); q.pop(); for(int i = 0;i < n+2;i ++) { if(edge[u][i] > 0 && pre[i] == 0 ) { pre[i] = u; q.push(i); } } } //cout << "here" << endl; if(pre[t] == 0) break; for(int i = t; i != s;i = pre[i]) minflow = min(minflow, edge[pre[i]][i]); for(int i = t; i != s;i = pre[i]) { edge[pre[i]][i] -= minflow; edge[i][pre[i]] += minflow; } maxflow += minflow; //cout << maxflow <<endl; } return maxflow;}int main(){ char a,b,c; int from,to,cost; while(scanf("%d%d%d%d", &n, &np, &nc, &m) != EOF) { s = n ; t = n + 1; for(int i = 1; i <= m;i ++) { cin >> a >> from >> b >> to >> c >> cost; edge[from][to] = cost; //cout <<from <<" "<<to<<" "<<cost<<endl; } for(int i = 0; i < np;i ++) { cin >> a >> to >> b >> cost; edge[s][to] = cost; //cout <<s<<" "<<to <<" "<<cost <<endl; } for(int i = 0; i < nc;i ++) { cin >>a>>from>>b>>cost; edge[from][t] = cost; //cout <<from <<" "<<t<<" "<<cost<<endl; } int ans = EK(); printf("%d\n", ans); } return 0;}
- poj 1459
- 1459 poj
- POJ 1459
- POJ 1459
- poj 1459
- POJ 1459
- poj 1459
- POJ 1459 Power Network
- POJ 1459 Power Network
- poj 1459(最大流)
- Poj 1459 Power Network
- poj 1459 Power Network
- poj 1459 Power Network
- POJ 1459 Power Network
- POJ 1459 Power Network
- POJ 1459 最大流
- POJ-1459-Power Network
- Poj 1459 Power Network
- Centos中将openjdk切换为Oracle Jdk导致Tomcat无法正常启动的问题
- 现今市场对异构并行计算领域人员的需求
- 数组名a与&a的区别
- RabbitMQSender
- 【记录帖】svn常用命令
- POJ 1459
- iOS 9学习系列:如何使用ATS提高应用的安全性
- Gulp构建Android项目,安装APK
- Unity动态生成带碰撞体的LineRenderer
- 将Maven项目打包成可执行jar文件(引用第三方jar)
- 九度oj 1117
- ZOJ 3790 Consecutive Blocks(尺取法)
- day5: 字典、集、数组排序:字典类、集合类、数组数组排序、字典、集合的快速遍历、数组排序
- 黑马程序员——018——IO流③(读取/写入转换流(码表)、流操作规律、PrintStream、异常处理)