最小费用最大流邻接表模板
来源:互联网 发布:multisim13数据库下载 编辑:程序博客网 时间:2024/05/22 14:30
int dis[N],pre[N],head[N],visit[N],yong;void init() {memset(head,-1,sizeof(head));yong=0;}void build(int u,int v,int w,int f) {bian[yong].u=u;bian[yong].v=v;bian[yong].w=w;bian[yong].f=f;bian[yong].next=head[u];head[u]=yong++;}void adde(int u,int v,int w,int f) {build(u,v,w,f);build(v,u,-w,0);}int spfa(int s,int t) {memset(visit,0,sizeof(visit));memset(pre,-1,sizeof(pre));for(int i=0;i<=t;i++)//注意是从0开始而不是从s开始dis[i]=inf;queue<int>q; visit[s]=1;//必须是s q.push(s); dis[s]=0; while(!q.empty ()) { int u=q.front (); for(int index=head[u];index!=-1;index=bian[index].next) { int v=bian[index].v; if(bian[index].f&&dis[v]>dis[u]+bian[index].w) { dis[v]=dis[u]+bian[index].w; pre[v]=index; if(!visit[v]) { visit[v]=1; q.push (v); } } } q.pop(); visit[u]=0;//是u } if(dis[t]==inf) return -1; return dis[t];}int min_cost(int s,int t) { int sum=0,k,i; while((k=spfa(s,t))!=-1){ int minn=inf; i=pre[t]; while(i!=-1) { if(minn>bian[i].f) minn=bian[i].f; i=pre[bian[i].u]; } sum=sum+minn*k; i=pre[t]; while(i!=-1){ bian[i].f-=minn; bian[i^1].f+=minn; i=pre[bian[i].u]; } } return sum;}
0 0
- 最小费用最大流邻接表模板
- 【最小费用最大流+邻接表】POJ 2135
- 最小费用最大流(邻接矩阵和邻接表)
- POJ 2135:Farm Tour 邻接表最小费用最大流
- 最小费用流算法模板--SPFA(邻接表)
- 模板[最小费用最大流]
- 最小费用最大流模板
- 最小费用最大流模板
- 最小费用最大流模板
- 最小费用最大流,模板
- 最小费用最大流模板
- 最小费用最大流 模板
- 最小费用最大流模板
- 最小费用最大流模板
- 最小费用最大流模板
- 最小费用最大流模板
- 最小费用最大流模板
- 最小费用最大流模板
- JDOM生成XML文档的一般方法
- hdu-1196-Lowest Bit
- ubuntu 64位下安装wps
- qtopia_opensource-4.2.4配置时出现The system byte order could not be detected!
- 关于android中的单位(dp、sp)
- 最小费用最大流邻接表模板
- 安卓线程操作技术
- Struts2、Spring、Hibernate 高效开发的最佳实践
- ACdream 1148 GCD SUM 莫比乌斯反演
- 数据仓库中使用代理键(Surrogate Key)
- App加密那点事&浅探爱加密原理
- uva-11292-Dragon of Loowater
- db2mtrk--db2内存使用查看工具
- 字符串移位包含问题