Spfa费用流模板
2024-08-21 09:21:26
const int INF=;
const int maxn=,maxm=;
int cnt=,fir[maxn],nxt[maxm],to[maxm];
int cap[maxm],val[maxm],dis[maxn],path[maxn]; void add(int a,int b,int c,int v){
nxt[++cnt]=fir[a];to[cnt]=b;
cap[cnt]=c;val[cnt]=v;fir[a]=cnt;
}
void addedge(int a,int b,int c,int v){
add(a,b,c,v);
add(b,a,,-v);
} int S,T;
int vis[maxn];
int Spfa(){
deque<int>q;
memset(dis,,sizeof(dis));
memset(vis,,sizeof(vis));
q.push_front(S);
dis[S]=;vis[S]=;
while(!q.empty()){
int x=q.front();q.pop_front();vis[x]=;
for(int i=fir[x];i;i=nxt[i])
if(cap[i]&&dis[x]+val[i]<dis[to[i]]){
dis[to[i]]=val[i]+dis[x];
path[to[i]]=i;
if(vis[to[i]])continue;
if(dis[to[i]]<dis[x])
q.push_front(to[i]);
else
q.push_back(to[i]);
vis[to[i]]=;
}
}
return dis[T]==dis[T+]?:dis[T];
} int Aug(){
int p=T,f=INF;
while(p!=S){
f=min(f,cap[path[p]]);
p=to[path[p]^];
}
p=T;
while(p!=S){
cap[path[p]]-=f;
cap[path[p]^]+=f;
p=to[path[p]^];
}
return f;
} int MCMF(){
int ret=,d;
while(d=Spfa())
ret+=Aug()*d;
return ret;
}
#include <queue>
using namespace std;
const int maxn=;
const int maxm=;
const int INF=;
int n,m,w[maxn],cnt,fir[maxn],to[maxm],nxt[maxm];
int cap[maxm],val[maxm],path[maxn],vis[maxn],dis[maxn];
queue<int>q;
struct Net_Flow{
Net_Flow(){cnt=;} void add(int a,int b,int c,int v){
nxt[++cnt]=fir[a];cap[cnt]=c;
to[cnt]=b;val[cnt]=v;fir[a]=cnt;
} void addedge(int a,int b,int c,int v){
add(a,b,c,v);add(b,a,,-v);
} int Spfa(int S,int T){
memset(dis,,sizeof(dis));
q.push(S);vis[S]=;dis[S]=;
while(!q.empty()){
int x=q.front();q.pop();vis[x]=;
for(int i=fir[x];i;i=nxt[i])
if(cap[i]&&dis[to[i]]>dis[x]+val[i]){
dis[to[i]]=dis[x]+val[i];
if(!vis[to[i]])q.push(to[i]);
vis[to[i]]=;path[to[i]]=i;
}
}
return dis[T];
} int Aug(int S,int T){
int p=T,f=INF;
while(p!=S){
f=min(f,cap[path[p]]);
p=to[path[p]^];
}p=T;
while(p!=S){
cap[path[p]]-=f;
cap[path[p]^]+=f;
p=to[path[p]^];
}
return f;
} int MCMF(int S,int T){
int v=,d;
while((d=Spfa(S,T))!=INF)
v+=d*Aug(S,T);
return v;
}
}mcmf;
最新文章
- H5+CSS3知识点
- 2016ACM/ICPC亚洲区沈阳站-重现赛赛题
- CC2540中的电压检测
- gdb 调试程序
- JSON解析实例——使用Json-lib
- Array数组
- 6.6	 Android 编译机制的变迁
- cmdCreateViewTag
- 非对称SVD电影推荐系统
- iOS 安全:UIWebView访问Https站点防止中间人攻击
- 单片机 C 语言模块化编程
- 设计模式(六):Singleton 单件模式 -- 创建型模式
- TestNG使用Eclipse建立Test Case - 就是爱Java
- TLSAlloc()
- uva 12171 hdu 1771 Sculpture
- pwnable.tw applestore 分析
- 【转】XML 特殊字符处理
- java路径
- 论坛:获取当前原始请求中的远程IP地址
- BeautifulSoup基本步骤
热门文章
- 第二篇:python基础之文件读写
- ASP.NET Boilerplate 工作单元
- $HTTP_RAW_POST_DATA
- CSS3新增Hsl、Hsla、Rgba色彩模式以及透明属性(转)
- HTML5 History对象,Javascript修改地址栏而不刷新页面(二)
- android 蓝牙4.0 开发介绍
- How to Make LastPass Even More Secure with Google Authenticator
- dnsever 邮件记录
- index ffs、index fs原理考究-1109
- java 从jar包中读取资源文件