最小费用最大流-poj-2135

Farm Tour

 

Description

When FJ's friends visit him on the farm, he likes to show them around. His farm comprises N (1 <= N <= 1000) fields numbered 1..N, the first of which contains his house and the Nth of which contains the big barn. A total M (1 <= M <= 10000) paths that connect the fields in various ways. Each path connects two different fields and has a nonzero length smaller than 35,000. 

To show off his farm in the best way, he walks a tour that starts at his house, potentially travels through some fields, and ends at the barn. Later, he returns (potentially through some fields) back to his house again. 

He wants his tour to be as short as possible, however he doesn't want to walk on any given path more than once. Calculate the shortest tour possible. FJ is sure that some tour exists for any given farm.

Input

* Line 1: Two space-separated integers: N and M. 

* Lines 2..M+1: Three space-separated integers that define a path: The starting field, the end field, and the path's length. 

Output

A single line containing the length of the shortest tour. 

Sample Input

4 5

1 2 1

2 3 1

3 4 1

1 3 2

2 4 2

Sample Output

6

Source

USACO 2003 February Green

大意:小明喜欢带他的朋友们逛自己的农场。农场有n块地,屋舍位于1号,谷仓位于n号。有m条路连接这些地,路是无向的,每条路长度已知。他想设计一条线路,从1出发,到n,再回到1,且同一条路不走两遍。问最短的行程是多少。

分析:可建模为最小费用最大流。从1出发,到n,再回到1,相当于找到两条从1到n的路径且二者不能有交集。

对于每条路,费用为长度,容量为1,这样就限制了只能走一次。新建一个顶点连向1,费用为0,容量为2.,作为等价源点。同理再建一个等价汇点。

因为重边的存在,图的存储结构为邻接表而非邻接矩阵。

注意:不能单纯的找两次最短路,反例见下图:

 

代码:spfa,还不太懂 ,先贴上

时间: 2024-08-31 22:00:35

最小费用最大流-poj-2135的相关文章

运筹学最小费用最大流,MATLAB编程

问题描述 运筹学最小费用最大流,MATLAB编程 汽车生产 Fordco公司在底特律和达拉斯生产汽车.底特律的工厂最多可以生产6500辆汽车,达拉斯的工厂最多可以生产6000辆汽车.生产一辆汽车的成本在底特律是2000美元,在达拉斯是1800美元.汽车必须运输到3个城市.城市1必须收到5000辆汽车,城市2必须收到4000辆汽车,城市3必须收到3000辆汽车.下表给出了把一辆汽车从每家工厂运输到每个城市的运输成本.从给定的工厂到给定的城市最多只能运送3000辆汽车.表述一个可以使满足需求的成本最

poj3422 Kaka&#039;s Matrix Travels(最小费用最大流问题)

/* poj3422 Kaka's Matrix Travels 不知道 k次 dp做为什么不对??? 看了大牛的代码,才知道还可以这样做! 开始没有理解将a 和 a' 之间建立怎样的两条边,导致程序一直陷入死循环,真心花了好长时间,快崩溃了.无语..... 题意:有个方阵,每个格子里都有一个非负数,从左上角走到右下角,每次走一步,只能往右或往下走,经过的数字拿走 每次都找可以拿到数字和最大的路径走,走k次,求最大和 这是 最大费用最大流 问题 每次spfa都找的是一条和最大的路径 s--到左上

POJ题目分类

初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      (4)递推.      (5)构造法.(poj3295)      (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法:      (1)图的深度优先遍历和广度优先遍历.      (2)最短路径算法(dijkstra,bellman-ford

poj分类

初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      (4)递推.      (5)构造法.(poj3295)      (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法:      (1)图的深度优先遍历和广度优先遍历.      (2)最短路径算法(dijkstra,bellman-ford

poj系统训练计划

转载:http://www.cnblogs.com/silveryelf/archive/2011/10/29/2228681.html 初级: 基本算法: 枚举:1753    2965 贪心:1328    2109    2586 构造:3295 模拟:1068    2632    1573    2993    2996 图: 最短路径:1860    3259    1062    2253    1125    2240 最小生成树:1789    2485    1258    

poj 题型分类

主流算法: 1.搜索 //回溯 2.DP(动态规划) 3.贪心 4.图论 //Dijkstra.最小生成树.网络流 5.数论 //解模线性方程 6.计算几何 //凸壳.同等安置矩形的并的面积与周长 7.组合数学 //Polya定理 8.模拟 9.数据结构 //并查集.堆 10.博弈论 1. 排序 1423, 1694, 1723, 1727, 1763, 1788, 1828, 1838, 1840, 2201, 2376, 2377, 2380, 1318, 1877, 1928, 1971,

hduoj题目分类

基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029.1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092.1093.1094.1095.1096.1097.1098.1106.1108.1157.1163.1164.1170.1194.1196.1197.1201.1202.1205.1219.1234.1235.1236.1248.1

追美眉的各种算法

动态规划 基本上就是说:你追一个美眉的时候,需要对该美眉身边的各闺中密友都好,这样你追美眉这个问题就分解为对其美眉朋友的问题,只有把这些问题都解决了,最终你才能追到美眉.因此,该问题适用于聪明的美眉,懂得"看一个人,不是看他如何对你,而是看他如何对他人."的道理,并且对付这样的美眉总能得到最优解.但确定是开销较大,因为每个子问题都要好好对待-- 贪心法 基本上就是:你追一个美眉的时候,从相识到相知,每次都采用最aggressive的方式,进攻进攻再进攻!从不采用迂回战术或是欲擒故纵之法

北大ACM试题分类

初级: 一.基本算法:  (1)枚举. (poj1018,poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法.  (4)递推.  (5)构造法.(poj3295,poj3239) (6.1)模拟法.(poj1008,poj1068,poj2632,poj1573,poj2993,poj2996,poj3087) (6.2)模拟法(高精度算法)(poj1001,poj1503,poj2389,poj2602,poj3982,21位大数