[POJ2404]Jogging Trails(中国旅行商问题)(一般图的匹配——状压DP)

题目:http://poj.org/problem?id=2404

题意:有个n(n<=15)的点和m条无向边,每条边都有自己的权值。现在你要从某个点出发,每条边可以经过多次但要保证每条边至少走一次。现在你要找出一个方案,使得经过所有边的权值和最小,输出最小的权值和。

分析:

首先容易想到的是如果这个图G的每个点的度数都为偶数,那么G是欧拉图,那么一定存在欧拉回路,那么ans=∑每条边权值

如果图G不是欧拉图,那么必有偶数个奇度数的点。

如果我们把每条边都看作有无数条的话,那么原问题就是等价于走一个欧拉回路,也就是在把每条边当作只有一条的边的情况下,将某些边复制若干条,使得成的图G‘有欧拉回路且权值和最小。

要把图G加边成G‘,很容易想到其实就是对那偶数个奇度数点进行匹配。既然要最后的边权和最小,那么就可以对偶数个奇度数点重新建图,每两点之间的边的权值定义为图G中两点的最短路径(floyd一下就行),最后用状态压缩dp进行匹配就行了。

时间: 2024-10-12 22:52:24

[POJ2404]Jogging Trails(中国旅行商问题)(一般图的匹配——状压DP)的相关文章

【dp】luoguP4796 关于图 想不到是状压dp (┬_┬)

luoguP4796 题意:给定一张N个点M条边的无向图,每个点有一个颜色,所有点的颜色共有 K 种,编号为 1…K.求图上有多少条长度至少为 2 的简单路径,满足路径上的每一个点的颜色互不相同.路径上的点的连接顺序不同看作不同的两条路径. 数据范围:1?N,M?100000,1?K?5 一直朝着搜索的角度去思考,找不到什么明确的方法. 看了题解..知道需要状压,但是想不到是状压dp.............我dp果然太弱了(:′⌒`) 做法是: 设每个点的颜色是c[i],则对i这个点有一个起始

旅行商问题 状压DP

旅行商问题描述 现在有一个旅行商,在一个国家做生意.这个国家有N(2 <= N <= 15)个城市,城市之间有单行道可以通行,每条路都有相应的路费(0 <= d(I,j) <= 1000).现在旅行商要从0号城市出发,经过所有的城市,最后回到0号城市.要求所花的路费最小.保证这些道路能构成一个环(可以一笔画). 问题简化 给出一张带权有向有环图,用邻接矩阵表示,d(i,j)表示ij两个节点之间边的权值,INF表示没有边.要求从0号节点出发,经过每一个节点后正好回到0号节点,问经过边

[状压DP思路妙题]图

源自 luhong 大爷的 FJ 省冬令营模拟赛题 Statement 给定一个 \(n\) 个点 \(m\) 条边的图,没有重边与自环 每条边的两端点编号之差不超过 \(12\) 求选出一个非空点集使其导出子图连通的方案数模 \(2\) 后的结果 \(n\le 50\),\(m\le\binom n2\) Solution 妙啊!!!\(\times 3\) 首先我们注意到:对于一个非空图,\(2^{连通块个数}\equiv[图是否连通]\times 2(\bmod 4)\) 于是考虑转化成对

【状压DP】旅行商问题

给定一张带权有向图,要求从顶点0出发,经过每个结点恰好一次后再返回0,求边权和的最小值. 2<=n<=15 0<=d(i,j)<=1000 样例 5 80 1 30 3 41 2 52 0 42 3 53 4 34 0 74 1 6 dp[S][U]=min{dp[S∪{V}][V]+d(U,V)|V∉S&&d(U,V)!=INF}, d[(1<<n)-1][0]=0. O(2^n*n^2) #include<cstdio> #include

LightOJ1086 Jogging Trails(欧拉回路+中国邮递员问题+SPFA)

题目求从某点出发回到该点经过所有边至少一次的最短行程. 这个问题我在<图论算法理论.实现及应用>中看过,是一个经典的问题——中国邮递员问题(CPP, chinese postman problem)也称为中国邮路问题,是我国数学家管梅谷教授于1962年首次提出的,引起了世界不少数学家的关注.例如1973年匈牙利数学家Edmonds和Johnsom对中国邮路问题提出了一种有效算法. 解决的方法就是通过添加边,使其成为欧拉回路. 而这一题的问题就可以转化给这个无向图加最短的边使其所有点的度位偶数(

POJ 2404 Jogging Trails(最小权完美匹配)

[题目链接] http://poj.org/problem?id=2404 [题目大意] 给出一张图,求走遍所有的路径至少一次,并且回到出发点所需要走的最短路程 [题解] 如果图中所有点为偶点,那么一定存在欧拉回路, 否则一定存在偶数个奇点,将这些奇点取出构建新图, 任意两点之间的边权威原图中两点的最短距离, 用状压DP求最小权完美匹配,加上原图所有边权和就是答案. [代码] #include <cstdio> #include <algorithm> #include <c

POJ 2404 Jogging Trails

Jogging Trails Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2122   Accepted: 849 Description Gord is training for a marathon. Behind his house is a park with a large network of jogging trails connecting water stations. Gord wants to f

【云图】如何制作中国贪官落马图?

原文:[云图]如何制作中国贪官落马图? 摘要:之前的文章都是利用云索引来完成数据的分类显示的,今天教大家用云检索来制作有趣的地图.云检索的优点是,在结果展现的时候,可以让数据呈现出更棒的自定义效果.比如,结果面板的点击效果,markder的鼠标效果,信息窗口的自定义展示等.并且,教程中第一次使用了时间轴这样的插件!根据时间进度来播放整个地图标注加载的过程. ---------------------------------------------------------------- 效果提前看

poj 2226 Muddy Fields(合理建图+二分匹配)

1 /* 2 题意:用木板盖住泥泞的地方,不能盖住草.木板任意长!可以重叠覆盖! '*'表示泥泞的地方,'.'表示草! 3 思路: 4 首先让我们回忆一下HDU 2119 Matrix这一道题,一个矩阵中只有0, 1,然后让我们通过选择一行,或者 5 是一列将其所在行的或者所在列的 1全部删掉,求出最少需要几步? 6 7 这道题的思路就是:将行标 和 列标值为1的建立一条边!通过匈牙利算法可以得到这个二分图的最大匹配数 8 最大匹配数==最小顶点覆盖数!最小顶点覆盖就是用最少的点覆盖了这个二分图