POJ1459:Power Network(dinic)
题目链接:http://poj.org/problem?id=1459
题意:有n个结点,np个发电站,nc个消费者,m个电力运输线。接下去是m条边的信息(u,v)cost,cost表示边(u,v)的最大流量;a个发电站的信息(u)cost,cost表示发电站u能提供的最大流量;b个用户的信息(v)cost,cost表示每个用户v能接受的最大流量。
思路:在图中添加1个源点S和汇点T,将S和每个发电站相连,边的权值是发电站能提供的最大流量;将每个用户和T相连,边的权值是每个用户能接受的最大流量。从而转化成了一般的最大网络流问题,然后求解。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue>
#include <math.h>
#define N 1100
#define inf 0x3f3f3f3f
typedef int ll;
using namespace std;
ll n,np,nc,m,tt,dis[N],head[N];
struct node
{
ll x,y,w,next;
} eg[N*N];
void init()
{
tt=;
memset(head,-,sizeof(head));
}
void add(int xx,int yy,int ww)
{
eg[tt].x=xx;
eg[tt].y=yy;
eg[tt].w=ww;
eg[tt].next=head[xx];
head[xx]=tt++;
eg[tt].x=yy;
eg[tt].y=xx;
eg[tt].w=;
eg[tt].next=head[yy];
head[yy]=tt++;
}
bool bfs(int s,int e)
{
memset(dis,-,sizeof(dis));
dis[s]=;
queue<int>q;
q.push(s);
while(!q.empty())
{
int fa=q.front();
q.pop();
for(int i=head[fa]; i!=-; i=eg[i].next)
{
int v=eg[i].y;
if(dis[v]==-&&eg[i].w)
{
dis[v]=dis[fa]+;
q.push(v);
}
}
}
if(dis[e]>)
return true;
return false;
}
int dinic(int s,int maxt)
{
if(s==n+) return maxt;
int a,sum=maxt;
for(int i=head[s]; i!=-; i=eg[i].next)
{
int v=eg[i].y;
if(dis[v]==dis[s]+&&eg[i].w>)
{
a=dinic(v,min(sum,eg[i].w));
eg[i].w-=a;
eg[i+].w+=a;
sum-=a;
}
}
return maxt-sum;
}
int main()
{
ll xx,yy,ww;
while(scanf("%d%d%d%d",&n,&np,&nc,&m)!=EOF)
{
init();
while(m--)
{
while(getchar()!='(') ;
scanf("%d,%d)%d",&xx,&yy,&ww);
add(xx+,yy+,ww);
}
for(int i=; i<np; i++)
{
while(getchar()!='(') ;
scanf("%d)%d",&xx,&yy);
add(,xx+,yy);
}
for(int i=; i<nc; i++)
{
while(getchar()!='(') ;
scanf("%d)%d",&xx,&yy);
add(xx+,n+,yy);
}
ll ans=;
while(bfs(,n+))
{
ans+=dinic(,inf);
}
printf("%d\n",ans);
}
return ;
}
POJ1459:Power Network(dinic)的更多相关文章
- POJ1459 Power Network(网络最大流)
Power Network Time Limit: 2000MS Memory Limit: 32768K Total S ...
- POJ-1459 Power Network(最大流)
https://vjudge.net/problem/POJ-1459 题解转载自:優YoU http://user.qzone.qq.com/289065406/blog/1299339754 解题 ...
- POJ1459 Power Network —— 最大流
题目链接:https://vjudge.net/problem/POJ-1459 Power Network Time Limit: 2000MS Memory Limit: 32768K Tot ...
- Power Network(网络流最大流 & dinic算法 + 优化)
Power Network Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 24019 Accepted: 12540 D ...
- POJ1459:Power Network(多源点多汇点的最大流)
Power Network Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 31086 Accepted: 15986 题 ...
- POJ1459Power Network(dinic模板)
Power Network Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 25832 Accepted: 13481 D ...
- poj1459 Power Network (多源多汇最大流)
Description A power network consists of nodes (power stations, consumers and dispatchers) connected ...
- Power Network (最大流增广路算法模板题)
Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 20754 Accepted: 10872 Description A p ...
- POJ1459 - Power Network
原题链接 题意简述 原题看了好几遍才看懂- 给出一个个点,条边的有向图.个点中有个源点,个汇点,每个源点和汇点都有流出上限和流入上限.求最大流. 题解 建一个真 · 源点和一个真 · 汇点.真 · 源 ...
随机推荐
- CSS3 实现厉害的文字和输入框组合效果
最近在忙着弄网站,学到了不少效果,这又是一个厉害的 <html> <head> <meta http-equiv="Content-Type" co ...
- scanner, BufferedReader, InputStreamReader 区别及特殊字符的输入
1. Scanner是一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器!也就是控制台应用程序最为常用的文本输入方式!Scanner取得输入数据的依据是空格符:如按下空格键,Tab键或者En ...
- Xcode升级后插件失败解决方法
大家都知道每次升级Xcode 然后插件都不能用了,最根本的原因是每一个插件都有个Info.plist文件,这个文件里有个key-DVTPlugInCompatibilityUUIDs记录了能够使用该插 ...
- typecho篇
百度百科的介绍: Typecho是由type和echo两个词合成的,来自于开发团队的头脑风暴. Typecho基于PHP5开发,支持多种数据库,是一款内核强健﹑扩展 方便﹑体验友好﹑运行流畅的轻量级开 ...
- ThinkPHP中的验证码不出现的解决办法
出现这种问题的原因可能是因为代码写的不规范,出现了其他的输出:解决办法: 原代码: public function captchaAction() { $verify = ...
- ACM计算几何模板——圆和球
#include <iostream> #include <cmath> using namespace std; #define eps 1e-10 /********** ...
- Unreal开发HTC Vive程序,开启VR编辑模式
新建项目模板有个VirtualReality 调试的时候,Play按钮下拉有个VR Preview 打开VR模式,在我现在用的4.15.0版本,VR编辑模式还是预览功能,可以在“编辑器偏好设置”-“试 ...
- iOS 7 SDK: 如何使用后台获取(Background Fetch)
本文转载至 http://www.cocoachina.com/applenews/devnews/2013/1114/7350.html 本文主要教你如何使用iOS 7 SDK多任务处理API--B ...
- jquery将具有相同名称的元素的值提取出来放到一个数组内
jquery将具有相同名称的元素的值提取出来放到一个数组内 var arrInputValues = new Array(); $("input[name='xxx']").ea ...
- if...else if...else和switch语句的注意点
java if...else if...else 语句 if 语句后面可以跟 elseif…else 语句,这种语句可以检测到多种可能的情况. 使用 if,else if,else 语句的时候,需要注 ...