将两个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 网络流最小割的更多相关文章

  1. 【题解】 bzoj3894: 文理分科 (网络流/最小割)

    bzoj3894,懒得复制题面,戳我戳我 Solution: 首先这是一个网络流,应该还比较好想,主要就是考虑建图了. 我们来分析下题面,因为一个人要么选文科要么选理科,相当于两条流里面割掉一条(怎么 ...

  2. 【bzoj3774】最优选择 网络流最小割

    题目描述 小N手上有一个N*M的方格图,控制某一个点要付出Aij的代价,然后某个点如果被控制了,或者他周围的所有点(上下左右)都被控制了,那么他就算是被选择了的.一个点如果被选择了,那么可以得到Bij ...

  3. 【bzoj1143】[CTSC2008]祭祀river Floyd+网络流最小割

    题目描述 在遥远的东方,有一个神秘的民族,自称Y族.他们世代居住在水面上,奉龙王为神.每逢重大庆典, Y族都会在水面上举办盛大的祭祀活动.我们可以把Y族居住地水系看成一个由岔口和河道组成的网络.每条河 ...

  4. 【bzoj1797】[Ahoi2009]Mincut 最小割 网络流最小割+Tarjan

    题目描述 给定一张图,对于每一条边询问:(1)是否存在割断该边的s-t最小割 (2)是否所有s-t最小割都割断该边 输入 第一行有4个正整数,依次为N,M,s和t.第2行到第(M+1)行每行3个正 整 ...

  5. 【bzoj1976】[BeiJing2010组队]能量魔方 Cube 网络流最小割

    题目描述 一个n*n*n的立方体,每个位置为0或1.有些位置已经确定,还有一些需要待填入.问最后可以得到的 相邻且填入的数不同的点对 的数目最大. 输入 第一行包含一个数N,表示魔方的大小. 接下来 ...

  6. 【bzoj4177】Mike的农场 网络流最小割

    题目描述 Mike有一个农场,这个农场n个牲畜围栏,现在他想在每个牲畜围栏中养一只动物,每只动物可以是牛或羊,并且每个牲畜围栏中的饲养条件都不同,其中第i个牲畜围栏中的动物长大后,每只牛可以卖a[i] ...

  7. 【bzoj3438】小M的作物 网络流最小割

    原文地址:http://www.cnblogs.com/GXZlegend/p/6801522.html 题目描述 小M在MC里开辟了两块巨大的耕地A和B(你可以认为容量是无穷),现在,小P有n中作物 ...

  8. 【bzoj3144】[Hnoi2013]切糕 网络流最小割

    题目描述 输入 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R个P行Q列的矩阵,第z个 矩阵的第x行第y列是v(x,y,z) (1≤x≤ ...

  9. 【bzoj3894】文理分科 网络流最小割

    原文地址:http://www.cnblogs.com/GXZlegend 题目描述 文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠结过) 小P所在的班级要进行文理分科.他的班级可以用 ...

随机推荐

  1. Ubuntu Server 上安装pip后pip命令报错的解决办法

    Installation Do I need to install pip? pip is already installed if you are using Python 2 >=2.7.9 ...

  2. Java中的流(1)流简介

    简介 1.在java中stream代表一种数据流(源),java.io的底层数据元.(比作成水管)2.InputStream 比作进水管,水从里面流向你,你要接收,read3.OutputStream ...

  3. html 测试

    斯蒂芬斯蒂芬 20:23你过来吧,我们好好谈一谈 好好学习 21:22这是一个无法避免的错误 作为一个新手,我在学习HTML文件的格式,我觉得博客园的编辑器很棒, 查看这些源代码让我学习到了许多知识. ...

  4. java问题收集

    2014-10-27 构造器最好保留一个无参的,否则一些框架调用初始化时,会报错     星期三,2013年11月6日 volatile关键字 : 1. 与synchronized几乎相同,但是vol ...

  5. tuple元组创建单元素

    创建tuple单元素,一定要在结尾时添加一个逗号(,)解:如果不加逗号,哪怕是使用tuple()正确的创建元组,也会有歧义,它会把创建tuple元组的单元素,当成一个普通的输出语句结果列:如下,错误的 ...

  6. .net简单的fileupload控件上传

    前台代码: <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID ...

  7. JAVA 高级特性 JDBC

     需要的jdbc jar 包: mysql-connector-java-5.1.38-b...960.9 KB ojdbc6.jar2.0 MB sqljdbc4.jar455.4 KB   数据持 ...

  8. R in action读书笔记(6)-第七章:基本统计分析(中)

    7.2 频数表和列联表 > library(vcd) > head(Arthritis) ID Treatment Sex Age Improved 1 57 Treated Male 2 ...

  9. iOS---开发实用传感器

    传感器 1.什么是传感器 传感器是一种感应\检测装置, 目前已经广泛应用于智能手机上 2.传感器的作用 用于感应\检测设备周边的信息 不同类型的传感器, 检测的信息也不一样 iPhone中的下面现象都 ...

  10. vue HTTP请求(针对vue-resource)

    //初始化页面需要做什么事情 //点击后需要做什么事情 //鼠标.键盘.冒泡.默认行为等事件 //前端调用接口就是按需展示数据//created和mounted里面都可以做数据处理,唯一不同的是cre ...