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
原题链接 题意简述 原题看了好几遍才看懂- 给出一个个点,条边的有向图.个点中有个源点,个汇点,每个源点和汇点都有流出上限和流入上限.求最大流. 题解 建一个真 · 源点和一个真 · 汇点.真 · 源 ...
随机推荐
- 多个 label checkbox 组合 显示在同一个水平线上[前提Bootstrap框架]
<th align="left" valign="middle"> <label class="checkbox inline fo ...
- contract
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- php -- 反射ReflectionClass
反射类:ReflectionClass 反射就是将其他类的结构给反应出来,从而可以对类的结构进行了解便于对类的使用. ReflectionClass::export(类名); 返回结果为三个数组:常量 ...
- Unity中用触摸控制物体旋转和放大
using UnityEngine;using System.Collections;using System.IO; public class ScaleAndRotate : MonoBehavi ...
- Math函数
floor --将一个小数向下舍入为整数 float floor ( float $value ) 注意:floor返回的虽然是取整的数字 但是类型仍然是float类型. 实例: echo floor ...
- Firefox 新增容器标签:可同时登录多个用户
Mozilla昨天在Firefox夜间构建版50.0a1中增加了一个名为“容器标签Container Tabs”的实验性功能. Mozilla的工程师称,该功能可以将用户的浏览会话分到不同的容器中.这 ...
- (转)MySQL百万级数据库优化
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- 170426、centos6.5安装 Zookeeper注册中心
注册中心服务器(192.168.3.71)配置,安装 Zookeeper: 1. 修改操作系统的/etc/hosts 文件中添加: # zookeeper servers 192.168.3.71 r ...
- Python IDE软件PyCharm通用激活方法
1,打开软件点击help-Register 2,输入地址http://xidea.online激活
- HTML5跨平台开发环境配置
http://hi.baidu.com/kuntakinte/item/1bbd3759b4901a3695eb050c