POJ1459 - Power Network
题意简述
原题看了好几遍才看懂…
给出一个n(n≤100)个点,m(m≤n2)条边的有向图。n个点中有np个源点,nc个汇点,每个源点和汇点都有流出上限和流入上限。求最大流。
题解
建一个真 · 源点和一个真 · 汇点。真 · 源点向所有原源点连容量等于其上限的边,所有原汇点向真 · 汇点连容量等于其上限的边。跑一遍最大流即可。
Code
//Power Network
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
inline char gc()
{
static char now[1<<16],*S,*T;
if(S==T) {T=(S=now)+fread(now,1,1<<16,stdin); if(S==T) return EOF;}
return *S++;
}
bool dgt(char ch) {return '0'<=ch&&ch<='9';}
inline int read()
{
int x=0; char ch=gc();
while(ch!=EOF&&!dgt(ch)) ch=gc();
while(dgt(ch)) x=x*10+ch-'0',ch=gc();
return x;
}
int const N=1e2+10;
int n,np,nc,m; int s,t;
int cnt,h[N];
struct edge{int v,c,nxt;} ed[N*N<<1];
void edAdd(int u,int v,int c)
{
cnt++; ed[cnt].v=v,ed[cnt].c=c; ed[cnt].nxt=h[u],h[u]=cnt;
cnt++; ed[cnt].v=u,ed[cnt].c=0; ed[cnt].nxt=h[v],h[v]=cnt;
}
int dpt[N]; int q[N],op,cl;
bool bfs()
{
op=cl=0; memset(dpt,0,sizeof dpt);
dpt[q[++cl]=s]=1;
while(op<cl)
{
int u=q[++op]; if(u==t) break;
for(int i=h[u];i;i=ed[i].nxt)
{
int v=ed[i].v,c=ed[i].c;
if(dpt[v]==0 && c) dpt[q[++cl]=v]=dpt[u]+1;
}
}
return dpt[t]?true:false;
}
int fill(int u,int in)
{
if(u==t || in==0) return in;
int out=0;
for(int i=h[u];i;i=ed[i].nxt)
{
int v=ed[i].v,c=ed[i].c;
if(dpt[v]!=dpt[u]+1 || !c) continue;
int flow=fill(v,min(in-out,c));
if(!flow) dpt[v]==0;
else out+=flow,ed[i].c-=flow,ed[i^1].c+=flow;
}
return out;
}
int main()
{
while(true)
{
n=read(),np=read(),nc=read(); m=read();
if(gc()==EOF) break;
s=0,t=n+1; cnt=1; memset(h,0,sizeof h);
for(int i=1;i<=m;i++) {int u=read()+1,v=read()+1,c=read(); edAdd(u,v,c);}
for(int i=1;i<=np;i++) {int u=read()+1,p=read(); edAdd(0,u,p);}
for(int i=1;i<=nc;i++) {int u=read()+1,c=read(); edAdd(u,t,c);}
int ans=0;
while(bfs()) ans+=fill(s,0x7FFFFFFF);
printf("%d\n",ans);
}
return 0;
}
注意
输入格式比较鬼畜
原题的节点是从0开始标号的,我的源点s是0所以全体++
POJ1459 - Power Network的更多相关文章
- POJ1459 Power Network —— 最大流
题目链接:https://vjudge.net/problem/POJ-1459 Power Network Time Limit: 2000MS Memory Limit: 32768K Tot ...
- poj1459 Power Network (多源多汇最大流)
Description A power network consists of nodes (power stations, consumers and dispatchers) connected ...
- POJ1459 Power Network(网络最大流)
Power Network Time Limit: 2000MS Memory Limit: 32768K Total S ...
- poj1087 A Plug for UNIX & poj1459 Power Network (最大流)
读题比做题难系列…… poj1087 输入n,代表插座个数,接下来分别输入n个插座,字母表示.把插座看做最大流源点,连接到一个点做最大源点,流量为1. 输入m,代表电器个数,接下来分别输入m个电器,字 ...
- POJ1459 Power Network 网络流 最大流
原文链接http://www.cnblogs.com/zhouzhendong/p/8326021.html 题目传送门 - POJ1459 题意概括 多组数据. 对于每一组数据,首先一个数n,表示有 ...
- POJ-1459 Power Network(最大流)
https://vjudge.net/problem/POJ-1459 题解转载自:優YoU http://user.qzone.qq.com/289065406/blog/1299339754 解题 ...
- poj1459 Power Network --- 最大流 EK/dinic
求从电站->调度站->消费者的最大流,给出一些边上的容量.和电站和消费者能够输入和输出的最大量. 加入一个超级源点和汇点,建边跑模板就能够了. 两个模板逗能够. #include < ...
- POJ1459:Power Network(dinic)
题目链接:http://poj.org/problem?id=1459 题意:有n个结点,np个发电站,nc个消费者,m个电力运输线.接下去是m条边的信息(u,v)cost,cost表示边(u,v)的 ...
- [poj1459]Power Network(多源多汇最大流)
题目大意:一个网络,一共$n$个节点,$m$条边,$np$个发电站,$nc$个用户,$n-np-nc$个调度器,每条边有一个容量,每个发电站有一个最大负载,每一个用户也有一个最大接受量.问最多能供给多 ...
随机推荐
- Maven 常用配置
pom.xml基础配置: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEn ...
- 反编译class文件并重新编译的方法
在没有.java源码的情况下,如果想修改一个.class文件.可以通过以下步骤实现: 修改前的class文件: 一.反编译.class文件成.java文件. 1.可以使用Java Decompiler ...
- 面向对象之原型——challenge
面向对象之原型 object-oriented面向对象的设计,不同于其他语言,js中的面向对象没有类的概念,因此,其对象也有些特殊. 所谓对象就是无序属性的集合,其属性可以包含基本值.对象.函数.也就 ...
- android 获取屏幕的宽和高
屏幕高度:context.getResources().getDisplayMetrics().heightPixels 屏幕宽度:context.getResources().getDisplayM ...
- Selenium+java+idea的安装与配置
当前操作系统:Windows10pro x64 一.安装JDK 1.到jdk官网下载一个对应当前系统的安装包(Selenium仅支持JDK1.8及以上版本) 网址:http://www.oracle. ...
- nongsanli
之后的内容只能追加,不可以修改,删除. 1. mysql可以对字段进行MD5加密, 加密插入:INSERT INTO t_user(id,username,PASSWORD) VALUES('5 ...
- echarts中视觉映射器(visualMap)与时间轴(timeline)混用的实现方法
1.简述 echarts中的 timeline 组件,提供了在多个 ECharts option 间进行切换.播放等操作的功能. 与其他组件些不同,它需要操作『多个option』. 所以除了基准的ba ...
- xBIM IFC 输出 Excel 报表
目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...
- 一次saltstack环境变量的坑
现场环境: salt-minion端: ip:10.0.3.149 环境:使用 nvm装的nodejs 受用nodejs自带的npm 安装pm2 sal-master端: IP:10.0 ...
- NOIP2016提高组初赛(C++语言)试题 个人的胡乱分析 Part 3.
*已更新 胡乱分析的第三部分,程序填空(所谓的完善程序) 说到初赛,好像本周六就是了.哇好激动.. 填空题都是玄学.也许get到点了就会好做一些.. (标红的是填在空里的答案) T1.交朋友 (小矮个 ...