最大流——poj1459
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
#define maxn 100005
#define inf 0x3f3f3f3f
struct Edge{int to,nxt,w;}e[maxn<<];
int head[maxn],tot,n,m,np,nc,s,t;
void init(){
memset(head,-,sizeof head);
tot=;
}
void add(int u,int v,int w){
e[tot].to=v;e[tot].w=w;e[tot].nxt=head[u];head[u]=tot++;
e[tot].to=u;e[tot].w=;e[tot].nxt=head[v];head[v]=tot++;
} int d[maxn];
int bfs(){
memset(d,,sizeof d);
queue<int>q;
q.push(s);d[s]=; while(q.size()){
int x=q.front();q.pop();
for(int i=head[x];i!=-;i=e[i].nxt){
int y=e[i].to;
if(e[i].w== || d[y])continue;
d[y]=d[x]+;
q.push(y);
if(y==t)return ;
}
}
return ;
}
int dfs(int x,int flow){
if(x==t)return flow;
int rest=flow;
for(int i=head[x];i!=- && rest; i=e[i].nxt){
int y=e[i].to;
if(d[y]!=d[x]+ || e[i].w==)continue;
int k=dfs(y,min(rest,e[i].w));
if(!k)d[y]=;
rest-=k;e[i].w-=k;e[i^].w+=k;
}
return flow-rest;
}
int dinic(){
int ans=;
while(bfs())
while(int flow=dfs(s,inf))
ans+=flow;
return ans;
} int main(){
while(cin>>n>>np>>nc>>m){
init();
s=;t=n+;
for(int i=;i<=m;i++){
int u,v,w;
scanf("\n(%d,%d)%d",&u,&v,&w);
u++,v++;
add(u,v,w);
} for(int i=;i<=np;i++){
int u,w;
scanf("\n(%d)%d",&u,&w);
++u;
add(s,u,w);
}
for(int i=;i<=nc;i++){
int u,w;
scanf("\n(%d)%d",&u,&w);
++u;
add(u,t,w);
} cout<<dinic()<<'\n';
}
}
最大流——poj1459的更多相关文章
- 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 解题 ...
- POJ-1459 Power Network---最大流
题目链接: https://cn.vjudge.net/problem/POJ-1459 题目大意: 简单的说下题意(按输入输出来讲,前面的描述一堆的rubbish,还用来误导人),给你n个点,其中有 ...
- POJ-1459(最大流+EK算法)
Power Network POJ-1459 这题值得思索的就是特殊的输入,如何输入一连串字符.这里采用的方法是根据输入已知的输入格式,事先预定好要接受的数据类型. 这里套用的板子也是最大流的模板,但 ...
- 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 --- 最大流 EK/dinic
求从电站->调度站->消费者的最大流,给出一些边上的容量.和电站和消费者能够输入和输出的最大量. 加入一个超级源点和汇点,建边跑模板就能够了. 两个模板逗能够. #include < ...
- poj1459(最大流)
传送门:Power Network 题意:在一个网络图中有n个点,其中有np个发电站,nc个用户,m条电线;每个发电站,用户,和电线都对应有一个最大的电流;让求出该网络中最大的电流. 分析:最大流裸题 ...
- poj-1459(网络流-最大流)
题意:给你n个点的电网系统,有一些点是电站,能提供p的电能,有些点是用户,能消耗c的电能,有些是过渡站,不消耗不产生(等于没用),然后m条电线(x,y,w),代表x可以向y运输w的电能,问你这个电网系 ...
随机推荐
- 2018-9-30-dotnet-core-通过修改文件头的方式隐藏控制台窗口
title author date CreateTime categories dotnet core 通过修改文件头的方式隐藏控制台窗口 lindexi 2018-09-30 18:36:43 +0 ...
- ssh隧道实现端口转发
ssh隧道实现端口转发 本地转发 # 本地转发 ssh -g -f -N -L : root@ # -L 本地端口转发,转发172.16.1.1主机可以访问的资源,这里为转发172.16.1.2的80 ...
- json转字符串,json转list,json转pojo的工具类
package com.loveshop.util; import java.util.List; import com.fasterxml.jackson.core.JsonProcessingEx ...
- dev中 ,usercontrol打印界面内容,打印预览和打印
首先,在对应的文件夹下面添加引用,如下图 如果没有就下载下来包. 预先在本地文件夹下面建立.frx文件,像这样的, 然后在触发事件下面写 //打印预览 private void btn_Preview ...
- 基于 CI 1.7.x 的 项目使用新版本CI的文件缓存类库
维护的项目使用的是 codeigniter 1.7.x版本,但是我想使用文件缓存,但是旧版本是没有缓存类库的,并且autoload.php没有drivers这个配置项. 我复制的是 Codeignit ...
- vue 中使用 lazyload 插件 数据更图片不更新 的原因 及解决方案
在使用lazyload插件的img标签上,加上:key标识即可
- js循环给li绑定事件实现和弹出对应的索引
原文:http://www.cnblogs.com/wuchuanlong/p/5945286.html 方法一,动态添加click事件,并添加属性 var itemli = document.get ...
- C++ 字符串的分割函数split 及 用法【转载】
文章出处https://blog.csdn.net/glmushroom/article/details/80690881 之前在C#中总用到字符串的分割,使用系统函数即可,比如: string a ...
- https://segmentfault.com 一个学习网站
https://segmentfault.com一个学习网站
- Python实现字符串与数组相互转换功能示例
Python实现字符串与数组相互转换功能示例 本文实例讲述了Python实现字符串与数组相互转换功能.分享给大家供大家参考,具体如下: 字符串转数组 str = '1,2,3' arr = s ...