题目大意:

给定一个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模板的更多相关文章

  1. hdu 6437 /// 最小费用最大流 负花费 SPFA模板

    题目大意: 给定n,m,K,W 表示n个小时 m场电影(分为类型A.B) K个人 若某个人连续看了两场相同类型的电影则失去W 电影时间不能重叠 接下来给定m场电影的 s t w op 表示电影的 开始 ...

  2. POJ - 2135最小费用流

    题目链接:http://poj.org/problem?id=2135 今天学习最小费用流.模板手敲了一遍. 产生了一个新的问题:对于一条无向边,这样修改了正向边容量后,反向边不用管吗? 后来想了想, ...

  3. POJ 2135 简单费用流

    题意:       题意是一个人他要从牧场1走到牧场n然后在走回来,每条路径只走一次,问全程的最短路径是多少. 思路:        这个题目挺简单的吧,首先要保证每条边只能走一次,然后还要要求费用最 ...

  4. poj 2135 (基础费用流)

    题意:从1到n再到1,每条边只能走一次,求最短距离. 建图:每条边只能走一次就是流量是1,添加源点与1相连,容量为2,费用为0,n与汇点相连容量为2,费用为0: 求增广路用SPFA最短路求,, #in ...

  5. POJ 2135 Farm Tour (网络流,最小费用最大流)

    POJ 2135 Farm Tour (网络流,最小费用最大流) Description When FJ's friends visit him on the farm, he likes to sh ...

  6. POJ 2135 Farm Tour (最小费用最大流模板)

    题目大意: 给你一个n个农场,有m条道路,起点是1号农场,终点是n号农场,现在要求从1走到n,再从n走到1,要求不走重复路径,求最短路径长度. 算法讨论: 最小费用最大流.我们可以这样建模:既然要求不 ...

  7. poj 2135 Farm Tour 【无向图最小费用最大流】

    题目:id=2135" target="_blank">poj 2135 Farm Tour 题意:给出一个无向图,问从 1 点到 n 点然后又回到一点总共的最短路 ...

  8. [实变函数]5.2 非负简单函数的 Lebesgue 积分

    1 设        $$\bex        \phi(x)=\sum_{i=1}^j c_i\chi_{E_i}(x),\quad c_i\geq 0,        \eex$$ 其中     ...

  9. [实变函数]5.3 非负可测函数的 Lebesgue 积分

    本节中, 设 $f,g,f_i$ 是可测集 $E$ 上的非负可测函数, $A,B$ 是 $E$ 的可测子集.       1 定义: (1) $f$ 在 $E$ 上的 Lebesgue 积分      ...

随机推荐

  1. assets和static

    相同点: assets和static两个都是存放静态资源文件.项目中所需要的资源文件图片,字体图标,样式文件等都可以放在这两个文件下. 不相同点: assets中存放的静态资源文件在项目打包时,也就是 ...

  2. UVA11134_Fabled Rooks

    大概题意: 在n*n的棋盘上面放n个车,能否使他们互相不攻击(即不能在同一行一列),并且第i个车必须落在第i的矩形范围(xl,yl, xr,yr)之内 xy互相并不干扰,所以就可以把这个二维问题压缩成 ...

  3. mysql 5.7.20 从frm文件中得到建表语句 (使用 mysql-utilities)

    系统环境  centos 7.2    mysql社区版 5.7.20 mysql-utilities 根据官网的说法,截止到2018年5月30日,实用工具的一些功能在Shell的路线图中,鼓励用户迁 ...

  4. USACO 2014 US Open Fair Photography /// 技巧

    题目大意: 给定n头奶牛 给定n头奶头所在位置和品种 品种只有G H两种 求一段区间的长度 要求区间内包含的品种满足各品种的数量相同 将一个品种的值设为1 另一个设为-1 假设 i<j 而 1~ ...

  5. vue组件库的基本开发步骤

    市面上目前已有各种各样的UI组件库,比如 Element 和 iView,他们的强大毋庸置疑.但是我们面临的情况是需求越来越复杂,当它们不能再满足我们需求的时候,这个时候就有必要开发一套属于自己团队的 ...

  6. 灯泡编程题-java

    现在有100个灯泡,每个灯泡都是关着的,灯泡排序为1~100,接着将2的倍数的灯泡开关按一下,然后将3的倍数的灯泡开关按一下……直到将N的倍数的灯泡开关按一下,最后统计灯泡亮着的数目. 算法思路: 1 ...

  7. 使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

    使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复 这种操作百度一搜一大片,今天整理以前做的项目时自己备份了一下数据库,试着将数据进行导出备份和导入恢复了一下:下面是操作过程: 1 ...

  8. Apache启动后出现You don't have permission to access on this server的解决办法

    安装好wampserver想在浏览器打开运行php的结果,发现: You don't have permission to access on this server 解决办法是: 在Apache的根 ...

  9. springcloud feign增加熔断器Hystrix

    1.依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>s ...

  10. 如何重置Magento管理用户、角色和资源的权限

    场景1:所有的资源权限被设置为管理角色 步骤1:获取当前的管理角色详细信息 SELECT * FROM admin_role WHERE role_name = 'Administrators' /* ...