题目链接: http://poj.org/problem?id=1459

因为发电站有多个,所以需要一个超级源点,消费者有多个,需要一个超级汇点,这样超级源点到发电站的权值就是发电站的容量,也就是题目中的pmax,消费者到超级汇点的权值就是消费者的容量,也就是题目中的cmax。初学网络流,第一眼看到这个题还以为应该先做一遍EK算法,然后减去max(p-pmax, c-cmax)呢。。没想到这个题的难点就是建图而已。。

 #include <stdio.h>
#include <string.h>
#include <queue>
#include <algorithm>
using namespace std; const int INF = 0x3f3f3f3f;
int cap[][], flow[][], res[], pre[];
int start, end;
int n_node, n_power, n_consumer, n_line;
queue<int>que; int Edmonds_Karp()
{
while(!que.empty())que.pop();
int flow_sum = ;
while(true)
{
memset(res, , sizeof(res));
res[start] = INF;
que.push(start);
while(!que.empty())
{
int u = que.front();
que.pop();
for(int v = ; v < n_node+; v++)
{
if(!res[v] && cap[u][v] > flow[u][v])
{
pre[v] = u;
que.push(v);
res[v] = min(res[u], cap[u][v] - flow[u][v]);
}
}
}
if(res[end] == )break;
for(int u = end; u != start; u = pre[u])
{
flow[pre[u]][u] += res[end];
flow[u][pre[u]] -= res[end];
}
flow_sum += res[end];
}
return flow_sum;
} int main()
{
char fuck_space[];//18禁。。
while(scanf("%d %d %d %d", &n_node, &n_power, &n_consumer, &n_line) != EOF)
{
int u, v, w;
memset(cap, , sizeof(cap));
memset(flow, , sizeof(flow));
start = n_node;
end = n_node+;
for(int i = ; i < n_line; i++)
{
scanf("%s", fuck_space);
sscanf(fuck_space, "(%d,%d)%d", &u, &v, &w);
cap[u][v] += w;
}
for(int i = ; i < n_power; i++)
{
scanf("%s", fuck_space);
sscanf(fuck_space, "(%d)%d", &u, &w);
cap[start][u] += w;
}
for(int i = ; i < n_consumer; i++)
{
scanf("%s", fuck_space);
sscanf(fuck_space, "(%d)%d", &u, &w);
cap[u][end] += w;
}
printf("%d\n", Edmonds_Karp());
}
return ;
}

POJ 1459 Power Network 最大流(Edmonds_Karp算法)的更多相关文章

  1. 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 ...

  2. poj 1459 Power Network

    题目连接 http://poj.org/problem?id=1459 Power Network Description A power network consists of nodes (pow ...

  3. poj 1459 Power Network : 最大网络流 dinic算法实现

    点击打开链接 Power Network Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 20903   Accepted:  ...

  4. 2018.07.06 POJ 1459 Power Network(多源多汇最大流)

    Power Network Time Limit: 2000MS Memory Limit: 32768K Description A power network consists of nodes ...

  5. POJ 1459 Power Network(网络流 最大流 多起点,多汇点)

    Power Network Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 22987   Accepted: 12039 D ...

  6. 网络流--最大流--POJ 1459 Power Network

    #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #incl ...

  7. poj 1459 Power Network【建立超级源点,超级汇点】

    Power Network Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 25514   Accepted: 13287 D ...

  8. POJ 1459 Power Network(网络最大流,dinic算法模板题)

    题意:给出n,np,nc,m,n为节点数,np为发电站数,nc为用电厂数,m为边的个数.      接下来给出m个数据(u,v)z,表示w(u,v)允许传输的最大电力为z:np个数据(u)z,表示发电 ...

  9. POJ - 1459 Power Network(最大流)(模板)

    1.看了好久,囧. n个节点,np个源点,nc个汇点,m条边(对应代码中即节点u 到节点v 的最大流量为z) 求所有汇点的最大流. 2.多个源点,多个汇点的最大流. 建立一个超级源点.一个超级汇点,然 ...

随机推荐

  1. 存储过程为什么比sql效率高

    对于存储过程为什么比sql效率高的原因有4点 第一就是使用存储过程允许组建式编成, 二是可以对程序进行编译,

  2. 黑色遮罩引导蒙版 CSS实现方式

    一.微云的实现 网站有一些改动的时候,为了让用户熟知新的操作位置,往往会增加一个引导,常见的方式就是使用一个黑色的半透明蒙版,然后需要关注的区域是镂空的. 然后上周五我去微云转悠的时候,也看到了引导层 ...

  3. NChome导出补丁包需要注意的东西

  4. ASP.NET问题处理---targetFramwork=‘4.0’错误

    问题原因分析:系统没有下载 .NET framwork 4.0 版本的框架或者有下载但没使用. 解决办法: 打开iis上发布的“应用程序池”,并右键我们所发布的网站: 选择“添加应用程序池”: 最后选 ...

  5. Eclipse 配置SSH 详解

    http://blog.csdn.net/binyao02123202/article/details/18446523 最近看了很多招聘,其中很多我想去的公司都需要一些技能,其中熟练 Java SS ...

  6. 向SQL2008R2导入Acess、excel数据

    一:导入Access数据 1.在sql2008查询分析 器中输入如下查询语句能查出access中的数据 SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLE ...

  7. selenium2.0处理case实例(一)

    通过自动化脚本, 判断下拉框选项值是否按照字母顺序(忽略大小写)显示 case场景如下: 1)打开www.test.com;2)判断下拉框选项是否按照字母顺序排列(忽略大小写)3)选择其中一个任意选项 ...

  8. iOS测试一段代码的运行时间

    王刚韧 23:19:26测试一段代码的运行时间 测试一段代码运行花了多久: NSDate* tmpStartData = [NSDate date] ;<#代码#> double delt ...

  9. linux命令行执行db2存储过程

    存储过程代码如下: CREATE PROCEDURE proc_sum2(IN n INT,OUT sum INT,OUT j INT) BEGIN DECLARE i INT; ; ; ; WHIL ...

  10. 263. Ugly Number(C++)

    263. Ugly Number Write a program to check whether a given number is an ugly number. Ugly numbers are ...