POJ 2135 /// 最小费用流最大流 非负花费 BellmanFord模板
题目大意:
给定一个n个点m条边的无向图
求从点1去点n再从点n回点1的不重叠(同一条边不能走两次)的最短路
挑战P239
求去和回的两条最短路很难保证不重叠
直接当做是由1去n的两条不重叠的最短路
这样就变成了由1去n流量为2的最小费用流
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
const int N=;
int n,m;
struct EDGE { int v,w,c,r; };
vector <EDGE> E[N];
void addE(int u,int v,int w,int c) {
E[u].push_back((EDGE){v,w,c,E[v].size()});
E[v].push_back((EDGE){u,,-c,E[u].size()-});
}
int dis[N], pv[N] ,pe[N];
int minCFlow(int s,int t,int f) {
int res=;
while(f>) {
/// Bellman-Ford求s到t最短路
memset(dis,INF,sizeof(dis));
memset(pv,,sizeof(pv));
dis[s]=;
bool upD=;
while(upD) {
upD=;
for(int i=;i<=n;i++) { // 通过i点
if(dis[i]==INF) continue;
for(int j=;j<E[i].size();j++) { // 更新E[i][j]点的最短路
EDGE& e=E[i][j];
if(e.w> && dis[e.v]>dis[i]+e.c) { // 边容量>0才能走
dis[e.v]=dis[i]+e.c; // 找到更短的路 更新
pv[e.v]=i, pe[e.v]=j; // 记录前驱点及边 便于通过e.v找到i点
upD=;
}
}
}
}
if(dis[t]==INF) return -; // s不能到t 不能增广 int d=f; // 找到本轮实际能够流出的流量(即实际用掉的容量)
for(int i=t;pv[i];i=pv[i])
d=min(d,E[pv[i]][pe[i]].w);
f-=d; // 容量消耗
res+=d*dis[t]; // 计算本轮花费
for(int i=t;pv[i];i=pv[i]) {
EDGE& e=E[pv[i]][pe[i]];
e.w-=d;
E[i][e.r].w+=d;
} // 更新边的容量
}
return res;
}
int main()
{
while(~scanf("%d%d",&n,&m)) {
int s=, t=n;
for(int i=;i<m;i++) {
int u,v,c; scanf("%d%d%d",&u,&v,&c);
addE(u,v,,c); addE(v,u,,c);
// 建立u到v容量大小为1费用为c的边
}
printf("%d\n",minCFlow(s,t,));
// 求s到t传输大小为2(即最大容量为2)的最小费用流
} return ;
}
POJ 2135 /// 最小费用流最大流 非负花费 BellmanFord模板的更多相关文章
- hdu 6437 /// 最小费用最大流 负花费 SPFA模板
题目大意: 给定n,m,K,W 表示n个小时 m场电影(分为类型A.B) K个人 若某个人连续看了两场相同类型的电影则失去W 电影时间不能重叠 接下来给定m场电影的 s t w op 表示电影的 开始 ...
- POJ - 2135最小费用流
题目链接:http://poj.org/problem?id=2135 今天学习最小费用流.模板手敲了一遍. 产生了一个新的问题:对于一条无向边,这样修改了正向边容量后,反向边不用管吗? 后来想了想, ...
- POJ 2135 简单费用流
题意: 题意是一个人他要从牧场1走到牧场n然后在走回来,每条路径只走一次,问全程的最短路径是多少. 思路: 这个题目挺简单的吧,首先要保证每条边只能走一次,然后还要要求费用最 ...
- poj 2135 (基础费用流)
题意:从1到n再到1,每条边只能走一次,求最短距离. 建图:每条边只能走一次就是流量是1,添加源点与1相连,容量为2,费用为0,n与汇点相连容量为2,费用为0: 求增广路用SPFA最短路求,, #in ...
- POJ 2135 Farm Tour (网络流,最小费用最大流)
POJ 2135 Farm Tour (网络流,最小费用最大流) Description When FJ's friends visit him on the farm, he likes to sh ...
- POJ 2135 Farm Tour (最小费用最大流模板)
题目大意: 给你一个n个农场,有m条道路,起点是1号农场,终点是n号农场,现在要求从1走到n,再从n走到1,要求不走重复路径,求最短路径长度. 算法讨论: 最小费用最大流.我们可以这样建模:既然要求不 ...
- poj 2135 Farm Tour 【无向图最小费用最大流】
题目:id=2135" target="_blank">poj 2135 Farm Tour 题意:给出一个无向图,问从 1 点到 n 点然后又回到一点总共的最短路 ...
- [实变函数]5.2 非负简单函数的 Lebesgue 积分
1 设 $$\bex \phi(x)=\sum_{i=1}^j c_i\chi_{E_i}(x),\quad c_i\geq 0, \eex$$ 其中 ...
- [实变函数]5.3 非负可测函数的 Lebesgue 积分
本节中, 设 $f,g,f_i$ 是可测集 $E$ 上的非负可测函数, $A,B$ 是 $E$ 的可测子集. 1 定义: (1) $f$ 在 $E$ 上的 Lebesgue 积分 ...
随机推荐
- sql server 与 oracle的区别(转)
--1.数据类型不同. --sql server 的数据类型:int ,smallint ,char,varchar,nchar,nvarchar,ntext,datetime,smalld ...
- Sqlplus常用指令
一.ORACLE的启动和关闭1.在单机环境下2.在双机环境下二.Oracle数据库有哪几种启动方式1.startup nomount 非安装启动,这种方式启动下可执行:重建控制文件.重建数据库2.st ...
- 线性方程组迭代算法——Gauss-Seidel迭代算法的python实现
原理: 请看本人博客:线性方程组的迭代求解算法——原理 代码: import numpy as np max=100#迭代次数上限 Delta=0.01 m=2#阶数:矩阵为2阶 n=3#维数:3X3 ...
- vue - blog开发学习2
首页博客列表的开发 1.修改index.vue,使能够支持列表功能 <template> <div> <PostList v-for="(item,index) ...
- Spring Boot 中 @SpringBootApplication注解背后的三体结构探秘
概 述 SpringBoot 约定大于配置 的功力让我们如沐春风,在我之前写的文章<从SpringBoot到SpringMVC> 也对比过 SpringBoot 和 SpringMVC 这 ...
- HTML CSS的中英文对照
python 大蟒蛇 downloads 下载 install 安装 customize 自定义 path 环境变量:路径 optional 可选的 feature 特性特点 documentatio ...
- syslog-ng收集日志+ELK平台搭建教程
syslog-ng部署: 用于接收交换机输出的日志. syslog-ng安装很简单,可以顺便搜一下,文章有很多.我是yum直接安装的. syslog-ng配置: vi /etc/syslog-ng/s ...
- 【JS学习】慕课网9-14 删除结点操作的问题
试一试,定义clearText()函数,完成节点内容的删除. 1. 删除该节点的内容,先要获取子节点. 2. 然后使用循环遍历每个子节点. 3. 使用removeChild()删除节点. 特别要注意的 ...
- 当一个页面中有多个form表单并且有重名的元素时,js获取指定form表单中的指定元素
有时候我们会在一个页面中写了多个form表单,碰巧多个form表单中又有相同名称的元素,而我们又不想改名字,这个时候就能用到 $("#form1 #div1").val() 好玩吧 ...
- 初撩Django-RESTful-rest_framework序列化(将模型序列化为JSON)
官方网站: https://www.django-rest-framework.org/ 翻译网站:https://q1mi.github.io/Django-REST-framework-docum ...