POJ 3469 网络流最小割
将两个CPU分别视作源点和汇点
对于那些不在同一个CPU中的模块会产生的代价作为一条双向的容量弧
这里每个模块可以在任意一个CPU中运行,相当于寻找一个割,分割后,在S集合中的模块安装在第一个CPU中
那么在T集合中的模块就是在第二个CPU中,所求的最小割也正是最小耗费
根据最大流=最小割的原理,这里相当于是在求最大流
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue> using namespace std;
const int N = ;
const int INF = 0x3f3f3f3f;
int lev[N],first[N],k; struct Edge{
int u , v , cap , flow , next;
}e[N*]; void add_edge(int u , int v , int cap)
{
e[k].u=u , e[k].v = v , e[k].cap=cap , e[k].flow= , e[k].next = first[u];
first[u]=k++;
}
//寻找层次网络是否存在
bool find_level(int n)
{
queue<int> q;
q.push();
memset(lev , , sizeof(lev));
lev[]=;
while(!q.empty())
{
int u=q.front();
q.pop();
for(int i=first[u] ; i!=- ; i=e[i].next){
int v = e[i].v;
if(!lev[v] && e[i].cap > e[i].flow){
lev[v] = lev[u]+;
q.push(v);
}
}
}
return lev[n+]>;
} int Dinic(int n , int u , int sum)
{
int s = sum , t;
if(u == n+) return sum;
for(int i=first[u] ; i!=- ;i=e[i].next)
{
int v = e[i].v;
if(lev[v] != lev[u]+ || e[i].cap <= e[i].flow) continue;
t = Dinic(n , v , min(sum , e[i].cap - e[i].flow));
e[i].flow += t;
e[i^].flow -= t;
sum-=t;
}
return s-sum;
} int main()
{
// freopen("a.in" , "r" , stdin);
int n , m , u , v , cap1 , cap2;
while(scanf("%d%d" , &n , &m) == )
{
k=;
memset(first , - , sizeof(first));
for(int i= ; i<n ; i++)
{
scanf("%d%d" , &cap1 , &cap2);
//添加双向弧
add_edge( , i+ , cap1);
add_edge(i+ , , ); add_edge(i+ , n+ , cap2);
add_edge(n+ , i+ , );
}
for(int i= ; i<m ; i++)
{
scanf("%d%d%d" , &u , &v , &cap1);
add_edge(u , v , cap1);
add_edge(v , u , cap1);
}
int max_flow = ;
while(find_level(n)){
max_flow += Dinic(n , , INF);
}
printf("%d\n" , max_flow);
}
return ;
}
POJ 3469 网络流最小割的更多相关文章
- 【题解】 bzoj3894: 文理分科 (网络流/最小割)
bzoj3894,懒得复制题面,戳我戳我 Solution: 首先这是一个网络流,应该还比较好想,主要就是考虑建图了. 我们来分析下题面,因为一个人要么选文科要么选理科,相当于两条流里面割掉一条(怎么 ...
- 【bzoj3774】最优选择 网络流最小割
题目描述 小N手上有一个N*M的方格图,控制某一个点要付出Aij的代价,然后某个点如果被控制了,或者他周围的所有点(上下左右)都被控制了,那么他就算是被选择了的.一个点如果被选择了,那么可以得到Bij ...
- 【bzoj1143】[CTSC2008]祭祀river Floyd+网络流最小割
题目描述 在遥远的东方,有一个神秘的民族,自称Y族.他们世代居住在水面上,奉龙王为神.每逢重大庆典, Y族都会在水面上举办盛大的祭祀活动.我们可以把Y族居住地水系看成一个由岔口和河道组成的网络.每条河 ...
- 【bzoj1797】[Ahoi2009]Mincut 最小割 网络流最小割+Tarjan
题目描述 给定一张图,对于每一条边询问:(1)是否存在割断该边的s-t最小割 (2)是否所有s-t最小割都割断该边 输入 第一行有4个正整数,依次为N,M,s和t.第2行到第(M+1)行每行3个正 整 ...
- 【bzoj1976】[BeiJing2010组队]能量魔方 Cube 网络流最小割
题目描述 一个n*n*n的立方体,每个位置为0或1.有些位置已经确定,还有一些需要待填入.问最后可以得到的 相邻且填入的数不同的点对 的数目最大. 输入 第一行包含一个数N,表示魔方的大小. 接下来 ...
- 【bzoj4177】Mike的农场 网络流最小割
题目描述 Mike有一个农场,这个农场n个牲畜围栏,现在他想在每个牲畜围栏中养一只动物,每只动物可以是牛或羊,并且每个牲畜围栏中的饲养条件都不同,其中第i个牲畜围栏中的动物长大后,每只牛可以卖a[i] ...
- 【bzoj3438】小M的作物 网络流最小割
原文地址:http://www.cnblogs.com/GXZlegend/p/6801522.html 题目描述 小M在MC里开辟了两块巨大的耕地A和B(你可以认为容量是无穷),现在,小P有n中作物 ...
- 【bzoj3144】[Hnoi2013]切糕 网络流最小割
题目描述 输入 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R个P行Q列的矩阵,第z个 矩阵的第x行第y列是v(x,y,z) (1≤x≤ ...
- 【bzoj3894】文理分科 网络流最小割
原文地址:http://www.cnblogs.com/GXZlegend 题目描述 文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠结过) 小P所在的班级要进行文理分科.他的班级可以用 ...
随机推荐
- post和get提交服务器编码过程
参考资料:http://blog.csdn.net/z55887/article/details/46975679 先说出一个知识点: 如果浏览器端编码是UTF-8,那在服务器端解决乱码问题的方法有两 ...
- React.js 基本环境安装
安装 React.js React.js 单独使用基本上是不可能的事情.不要指望着类似于 jQuery 下载放到 <head /> 标签就开始使用.使用 React.js 不管在开发阶段生 ...
- AJPFX关于构造器的总结
构造器 构造器定义 构造器作用 构造器特点 构造器修饰符 默认构造器 构造器重载 构造器和一般函数的区 ...
- 大步小步法(BSGS) 学习笔记
\(\\\) BSGS 用于求解关于 \(x\) 的方程: \[ a^x\equiv b\pmod p\ ,\ (p,a)=1 \] 一般求解的是模意义下的指数,也就是最小非负整数解. \(\\\) ...
- 鸢尾花数据集-iris.data
iris.data 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3.0,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa 4.6,3. ...
- [Windows Server 2012] 阿里云镜像购买和使用方法
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将演示:阿里云镜像购买 ...
- java规范与标准?
所谓规范,即指由很多人同时遵守的行为或理论. java的规范并不是指其中一种,而是有很多种,比如java编码规范,java命名规范,java虚拟机规范等等,甚至于一个编码规范都有很多种,不同的公司.组 ...
- CentOS7 Install Shipyard
# 采集木jj 原文:http://www.cnblogs.com/caoguo/p/5735189.html # CentOS7 Install Shipyard# yum install dock ...
- iTOP-4412开发板-LinuxC-继电器模块的测试例程
平台:iTOP-4412开发板 实现:继电器模块测试例程 继电器的 C 的测试程序,C 测试程序可以在 Android系统,Qt 系统以及最小 linux 系统上运行,文档以 Android 系统上测 ...
- biff - 新到邮件提醒
总览 (SYNOPSIS) biff [ny ] 描述 (DESCRIPTION) Biff 通知系统在当前终端会话期间有新邮件是否提醒你. 支持的选项有 biff n 禁止新邮件提醒. y 开启新邮 ...