ACM/ICPC 之 电力网络-EK算法(POJ1459)
按照电站发电(从源点到电站),消费者消费(从消费者到汇点)的想法构建网络,以下是EK解法
//网络流EK算法
//Time:922Ms memory:224K
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std; #define MAX 105
#define INF 0x3f3f3f3f int n,np,nc,m;
int s,t;
int res[MAX][MAX]; //残留网络
int pre[MAX]; bool bfs()
{
memset(pre,-1,sizeof(pre));
queue<int> q;
q.push(s); pre[s] = 0;
while(!q.empty()){
int cur = q.front();
q.pop();
for(int i = 1; i <= t; i++)
{
if(pre[i] == -1 && res[cur][i])
{
pre[i] = cur;
if(i == t) return true;
q.push(i);
}
}
}
return false;
} int EK()
{
int maxFlow = 0;
while(bfs()){
int alpha = INF; //最小可改进量
for(int i = t; i != s; i = pre[i])
alpha = min(alpha, res[pre[i]][i]);
for(int i = t; i != s; i = pre[i])
{
res[pre[i]][i] -= alpha;
res[i][pre[i]] += alpha;
}
maxFlow += alpha;
}
return maxFlow;
} int main()
{
//freopen("in.txt", "r", stdin); while(~scanf("%d%d%d%d", &n,&np,&nc,&m)){
s = 0; t = n+2;
memset(res,0,sizeof(res));
int a,b,c;
while(m--){
scanf(" (%d,%d)%d", &a,&b,&c);
res[a+1][b+1] = c;
}
for(int i = 0; i < np; i++)
{ //电站
scanf(" (%d)%d", &b,&c);
res[s][b+1] = c;
}
for(int i = 0; i < nc; i++)
{ //消费
scanf(" (%d)%d", &a,&c);
res[a+1][t] = c;
} printf("%d\n", EK()); } return 0;
}
ACM/ICPC 之 电力网络-EK算法(POJ1459)的更多相关文章
- ACM/ICPC 之 网络流入门-EK算法(参考模板)(POJ1273)
基于残留网络与FF算法的改进-EK算法,核心是将一条边的单向残留容量的减少看做反向残留流量的增加. //网络流 //EK算法 //Time:16Ms Memory:348K #include<i ...
- ACM/ICPC 之 机器调度-匈牙利算法解最小点覆盖集(DFS)(POJ1325)
//匈牙利算法-DFS //求最小点覆盖集 == 求最大匹配 //Time:0Ms Memory:208K #include<iostream> #include<cstring&g ...
- 2017 ACM/ICPC 南宁区 网络赛 Overlapping Rectangles
2017-09-24 20:11:21 writer:pprp 找到的大神的代码,直接过了 采用了扫描线+线段树的算法,先码了,作为模板也不错啊 题目链接:https://nanti.jisuanke ...
- 【2017 ACM/ICPC 乌鲁木齐赛区网络赛环境测试赛 E】蒜头君的排序
[链接]h在这里写链接 [题意] 在这里写题意 [题解] 莫队算法+树状数组. 区间增加1或减少1. 对逆序对的影响是固定的. (用冒泡排序变成升序的交换次数,就是逆序对的个数) [错的次数] 0 [ ...
- 2014 ACM/ICPC 鞍山赛区网络赛(清华命题)
为迎接10月17号清华命题的鞍山现场赛 杭电上的题目 Biconnected(hdu4997) 状态压缩DP Rotate(hdu4998) 相对任一点的旋转 Overt(hdu4999 ...
- ACM/ICPC 之 ACM计算机工厂-EK算法(POJ3436)
题意有点难读懂 //网络流-EK算法-ACM计算机工厂-构图重点 //Time:0Ms Memory:208K #include <iostream> #include<cstrin ...
- HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)
HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 ...
- HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛)
HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛) Panda Time Limit: 10000/4000 MS (Java/Others) Memory Limit: ...
- 网络最大流算法—EK算法
前言 EK算法是求网络最大流的最基础的算法,也是比较好理解的一种算法,利用它可以解决绝大多数最大流问题. 但是受到时间复杂度的限制,这种算法常常有TLE的风险 思想 还记得我们在介绍最大流的时候提到的 ...
随机推荐
- 在线文档预览方案-office web apps续篇
上一篇在线文档预览方案-office web apps发布后收到很多网友的留言提问,所以准备再写一篇,一来介绍一下域控服务器安装,总结一下大家问的多的问题,二来宣传预览服务安装与技术支持的事情. 阅读 ...
- [转]Python yield 使用浅析
您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ? 我们先抛开 generator,以一个常见的编程题目来展示 yield ...
- 点击按钮后到底发生了什么,Touch,LongClick或者Click?
按钮点击事件详解 最近一个项目需要给应用初始界面上的动态按钮添加在不同状态的变换效果,如点击(俗一点也可称为按压)后实现背景图的更换或者图标的缩放等效果.由于按钮点击的时间有长有短,所以采用OnTou ...
- 持续集成(Continuous integration)
docker +jenkins + gitosc 到gitosc上,复制地址:https://git.oschina.net/99fu/CI.git 进入到 /home/fu git clone ...
- HTML5之API
HTML5就是牛,可以直接播放音视频,还可以作图: 一.HTML5中播放视频和音频: 加载时直接播放音频的方式:new Audio("BY2.mp3").play(); <d ...
- jq实现点击某元素之外触发事件
<script type="text/javascript"> $(document).bind("click",function(e){ var ...
- asp.net mvc HandleErrorAttribute 异常错误处理 无效!
系统未知bug,代码没有深究. 现象:filters.Add(new HandleErrorAttribute()); 使用了全局的异常处理过滤. HandleErrorAttribute 核心代码: ...
- 开发错误记录13:java.lang.UnsatisfiedLinkError: Couldn't load xxx.so: findLibrary returned null
今天在导入环信开发包时,编译报如下错: java.lang.UnsatisfiedLinkError: Couldn't load hyphenate_av from loader dalvik.sy ...
- Function构造函数
使用Function构造函数, 也能够创建函数, 和使用关键字function定义函数有几点区别: 使用function关键字这样定义函数: var f = function(x,y) {return ...
- 快速上手php:使用PhpStrom调试php
闲话 使用phpStrom的时候居然不打印到控制台,要打印测试的话就要输出到页面,目前我还不知道有什么好办法像jsp一样输出到页面的同时也打印到控制台.这种做法还是比较烦的,特别出问题需要调试的时候. ...