zoukankan      html  css  js  c++  java
  • [POJ2404]Jogging Trails(中国旅行商问题)(一般图的匹配——状压DP)

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

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

    分析:

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

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

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

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

  • 相关阅读:
    oracle11g 新特性
    RMAN 报:ORA-19504 ORA-27038
    ORACLE-用户常用数据字典的查询使用方法
    oracle
    收缩 表空间
    oracle 配置 oem
    索引大小及占表的空间
    Oracle 11g Windows 迁移至 Linux
    Python:列表生成式
    Python:字符串处理函数
  • 原文地址:https://www.cnblogs.com/wmrv587/p/4336076.html
Copyright © 2011-2022 走看看