博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj1087最小割
阅读量:5226 次
发布时间:2019-06-14

本文共 1167 字,大约阅读时间需要 3 分钟。

最大流最小割定理:移除最小边集使网络流中断的集值等于这个网络的最大流。

建图: 第一个cpu 流向第i的 模块的流量为ai  ,  第i个模块流向 第二个cpu的流量为 bi  。模块之间连边 a->b= w   b->a=w。

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;int s;int en;int n;int m;struct edge{ int to;int val;int next;int op;}e[1111111];const int INF=0xfffffff;int Min(int a,int b){ return a>b?b:a;}int len;int head[111111];int level[111111];void add(int from,int to,int val){ e[len].val=val;e[len].to=to;e[len].next=head[from];e[len].op=len+1; head[from]=len++; e[len].val=0;e[len].to=from;e[len].next=head[to];e[len].op=len-1; head[to]=len++;}bool bfs(){ for(int i=0;i
q; q.push(s); while(!q.empty()){ int cur=q.front(); q.pop(); for(int i=head[cur];i!=-1;i=e[i].next){ if(!e[i].val) continue; int cc=e[i].to; if(!level[cc]){ level[cc]=level[cur]+1; q.push(cc); } } } return level[en];}int dfs(int x,int val){ int tem=val; if(x==en) return val; for(int i=head[x];i!=-1&&tem;i=e[i].next){ if(!e[i].val) continue; int cc=e[i].to; // cout<
<<" "<
<

 

转载于:https://www.cnblogs.com/yigexigua/p/3884837.html

你可能感兴趣的文章
PHPStorm2017设置字体与设置浏览器访问
查看>>
SQL查询总结 - wanglei
查看>>
安装cocoa pods时出现Operation not permitted - /usr/bin/xcodeproj的问题
查看>>
makefile中使用变量
查看>>
GIT笔记:将项目发布到码云
查看>>
JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别
查看>>
JavaScript 鸭子模型
查看>>
SQL Server 如何查询表定义的列和索引信息
查看>>
GCD 之线程死锁
查看>>
NoSQL数据库常见分类
查看>>
一题多解 之 Bat
查看>>
Java 内部类
查看>>
{面试题7: 使用两个队列实现一个栈}
查看>>
【练习】使用事务和锁定语句
查看>>
centos7升级firefox的flash插件
查看>>
Apache Common-IO 使用
查看>>
javaScript数组去重方法汇总
查看>>
评价意见整合
查看>>
二、create-react-app自定义配置
查看>>
Android PullToRefreshExpandableListView的点击事件
查看>>