POJ 3469 /// 最大流Dinic
题目大意:
N个模块 在核A上执行花费a[i] 在核B上执行花费b[i]
有M个模块组合(d1,d2) 若d1模块与d2模块在不同核上执行需多花费w[i]
求执行所有模块所需的最小花费
挑战P237
将问题转化为最小割问题 求得的最小割就是最小花费
那么记在核A上执行的模块集合为S 核B上执行的模块集合为T 建立源点s 汇点t
某模块在A上执行花费a[i] 则建一条该模块到t容量为a[i]的边
某模块在B上执行花费b[i] 则建一条s到该模块容量为b[i]的边
d1模块与d2模块在不同核上执行需多花费w[i] 则建一条d1与d2间容量为w[i]的无向边
最后求s-t最小割 只要求s到t的最大流就行
#include <stdio.h>
#include <algorithm>
#include <cstring>
#include <vector>
#include <queue>
#define LL long long
#define INF 0x3f3f3f3f
using namespace std;
const int N=2e4+;
int n,m,s,t;
struct NODE { int v,w,r; };
vector <NODE> E[N];
void addE(int u,int v,int w) {
E[u].push_back((NODE){v,w,E[v].size()});
E[v].push_back((NODE){u,w,E[u].size()-});
}
/**Dinic*/
int lev[N], cur[N];
void bfs(int s) {
queue <int> q;
memset(lev,-,sizeof(lev));
lev[s]=; q.push(s);
while(!q.empty()) {
int u=q.front(); q.pop();
for(int i=;i<E[u].size();i++) {
NODE e=E[u][i];
if(e.w> && lev[e.v]<) {
lev[e.v]=lev[u]+;
q.push(e.v);
}
}
}
}
// 广搜一遍把可走的点分层保存在lev[]中
int dfs(int s,int t,int f) {
if(s==t) return f;
// 取地址才能修改到cur[]
for(int& i=cur[s];i<E[s].size();i++) {
NODE& e=E[s][i];
if(e.w> && lev[s]<lev[e.v]) {
int d=dfs(e.v,t,min(f,e.w));
if(d>) {
e.w-=d; E[e.v][e.r].w+=d;
return d;
}
}
}
return ;
}
// 深搜找增广路
int maxFlow(int s,int t) {
int flow=;
while() {
bfs(s);
if(lev[t]<) return flow;
memset(cur,,sizeof(cur));
while() {
int f=dfs(s,t,INF);
if(f==) break;
flow+=f;
}
}
}
/***/ int main()
{
while(~scanf("%d%d",&n,&m)) {
s=n, t=s+;
for(int i=;i<=t;i++) E[i].clear();
for(int i=;i<n;i++) {
int a,b; scanf("%d%d",&a,&b);
addE(i,t,a); addE(s,i,b);
}
for(int i=;i<m;i++) {
int a,b,w; scanf("%d%d%d",&a,&b,&w);
addE(a-,b-,w); addE(b-,a-,w);
}
printf("%d\n",maxFlow(s,t));
} return ;
}
POJ 3469 /// 最大流Dinic的更多相关文章
- poj 1273最大流dinic算法模板
#include<stdio.h> #include<string.h> #define N 300 #define inf 0x7fffffff #include<qu ...
- 网络流之最大流Dinic --- poj 1459
题目链接 Description A power network consists of nodes (power stations, consumers and dispatchers) conne ...
- poj 3281 最大流+建图
很巧妙的思想 转自:http://www.cnblogs.com/kuangbin/archive/2012/08/21/2649850.html 本题能够想到用最大流做,那真的是太绝了.建模的方法很 ...
- 网络流之最大流Dinic算法模版
/* 网络流之最大流Dinic算法模版 */ #include <cstring> #include <cstdio> #include <queue> using ...
- poj-1459-最大流dinic+链式前向星-isap+bfs+stack
title: poj-1459-最大流dinic+链式前向星-isap+bfs+stack date: 2018-11-22 20:57:54 tags: acm 刷题 categories: ACM ...
- 网络最大流Dinic
1.什么是网络最大流 形象的来说,网络最大流其实就是这样一个生活化的问题:现在有一个由许多水管组成的水流系统,每一根管道都有自己的最大通过水流限制(流量),超过这个限制水管会爆(你麻麻就会来找你喝茶q ...
- POJ 3469.Dual Core CPU 最大流dinic算法模板
Dual Core CPU Time Limit: 15000MS Memory Limit: 131072K Total Submissions: 24830 Accepted: 10756 ...
- POJ 1149 PIGS(Dinic最大流)
PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 20738 Accepted: 9481 Description ...
- POJ 3469(Dual Core CPU-最小割)[Template:网络流dinic V2]
Language: Default Dual Core CPU Time Limit: 15000MS Memory Limit: 131072K Total Submissions: 19321 ...
随机推荐
- Scrapy框架: settings.py设置
# -*- coding: utf-8 -*- # Scrapy settings for maitian project # # For simplicity, this file contains ...
- 用Emacs进行Java开发
用Emacs进行Java开发 */--> code {color: #FF0000} pre.src {background-color: #002b36; color: #839496;} 用 ...
- CF1223D
CF1223D 不需要动的一定值域连续 #include<iostream> #include<cstring> #include<cstdio> #include ...
- Socket网络编程--初级
如果想开发一个基于TCP/IP协议的网络程序,应用程序之间则主要通过Socket交换数据 .NET Socket支持四种编程模式 1.居于阻塞模式的Socket编程 2.”非阻塞“模式的Socket编 ...
- (PASS)break 和 continue 的区别
1 break; while循环中,break是用于永久终止循环.即不执行本次循环中break后面的语句,直接跳出循环. 终止,跳出,结束循环(可以作用在任何地方).也常与switch分支结构合用 ...
- Python常用三方库安装
//首先更新pip python -m pip install --upgrade pip //一个类似Matlab的Plot绘制数据图的库. python -m pip install matplo ...
- 在linux设置/etc/vimrc 将vim 中后缀.sh的文件 的前几行进行默认输入
输入vim test.sh 新建后缀sh的文件,效果如下: 具体/etc/vimrc配置为: if expand("%:e") == 'sh' call setline(1,&q ...
- flexbox布局一
flexbox布局是一种新的css布局,flex是flexible的简写,所以flexbox就可以理解为可伸缩布局.而可伸缩性也是flexbox布局的亮点,至于如何可伸缩,看完下面的介绍大家应该就会有 ...
- Python查看文件属性
import os print(os.stat('my_module.py')) 输出: os.stat_result(st_mode=33188, st_ino=7348222, st_dev=16 ...
- Java中IO流之字符流
我们有了字节流,为什么还需要字符流? 字符的底层是 字节 + 编码表 = 字符,字符是人能看懂的信息. 字符流在使用的时候,会以字节流为基础,把字节写入缓冲区,在缓冲区内根据编码类型(UTF-8,GB ...