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

题意:

一张带权无向图,求选择一个起点,每条边至少被经过一遍,再回到起点的最小代价

加最小代价的边,使图变成欧拉图

无向图欧拉图:所有点的度数为偶数

抽离所有度数为奇数的点,状压dp

dp[i] 表示 状态为i的奇度数的点,度数变成偶数的最小代价

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>#define N 16using namespace std;int d[N];int dy[N];int f[N][N];int dp[1<<N-1];void read(int &x)
{x=0; char c=getchar();while(!isdigit(c)) c=getchar();while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); }
}int main()
{int n,m;int u,v,w;int sum;while(1){read(n); if(!n) return 0;read(m);memset(f,63,sizeof(f));memset(d,0,sizeof(d));for(int i=1;i<=n;++i) f[i][i]=0;sum=0;while(m--){read(u); read(v); read(w);d[u]++; d[v]++;sum+=w;f[u][v]=f[v][u]=min(f[u][v],w);}for(int k=1;k<=n;++k)for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)f[i][j]=min(f[i][j],f[i][k]+f[k][j]);int cnt=0;for(int i=1;i<=n;++i)if(d[i]&1) dy[++cnt]=i;memset(dp,63,sizeof(dp));dp[0]=0;int S=1<<cnt;for(int i=0;i<S;++i){int x=1;while((1<<x-1)&i) x++;for(int y=x+1;y<=cnt;++y)if(!(i&1<<y-1))dp[i|(1<<x-1)|(1<<y-1)]=min(dp[i|(1<<x-1)|(1<<y-1)],dp[i]+f[dy[x]][dy[y]]);}printf("%d\n",dp[S-1]+sum);}
}            

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/8425924.html

poj 2404 Jogging Trails相关推荐

  1. POJ 2404 Jogging Trails 笔记

    跑马拉松.n座补水站,m条道路.已知每条道路两端的补水站和道路长度.求跑遍所有道路至少一遍的最短路线长度.

  2. UVA10296 Jogging Trails(中国邮递员问题)(欧拉回路、一般图最大权匹配 / 状压DP)

    整理的算法模板合集: ACM模板 目录 思路 UVA10296 Jogging Trails 题目翻译: 给你n个点,m条无向边,每条边有一定的距离数值,构造成一个连通图.问从任意一点出发,遍历所有的 ...

  3. [UVa10296]Jogging Trails

    题目大意: 中国邮递员问题. 给你一个无向带权连通图,求经过所有边并返回起点的最短路径. 思路: Edmonds-Johnson算法. 显然,当原图为欧拉图时,答案即为其欧拉回路的长度. 考虑原图不存 ...

  4. POJ2404:Jogging Trails

    Portal 题意:无相带权图上的中国邮路问题.即:从任意一点出发,每条边至少走一次最后回到起点,所用的最短距离. 度数为奇数的点一定为偶数个,将这些点建新图,两两之间距离为原图最短距离. 然后最小权 ...

  5. [中国邮路问题 欧拉回路 最短路 一般图匹配||状压DP] FZU 1009 Jogging Trails

    论文:仇荣琦<欧拉回路性质与应用探究> 本来以为完全图匹配有什么高深的算法 结果去看参考资料里的论文就是带花树 汗 这道题n小 状压每个点的奇偶性 #include<cstdio&g ...

  6. 图论--欧拉路,欧拉回路(小结)

    在题目中在慢慢细说概念 1.HDU - 3018 Ant Trip 题目大意:又N个村庄,M条道路.问须要走几次才干将全部的路遍历 解题思路:这题问的是有关欧拉路的判定 欧拉路就是每条边仅仅能走一次, ...

  7. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

  8. POJ 超详细分类

    POJ 各题算法 1000    A+B Problem            送分题     49%    2005-5-7 1001    Exponentiation         高精度   ...

  9. HOJ题目分类//放这儿没事刷刷学算法!嘻嘻!

    各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...

最新文章

  1. 牛客网 2018年全国多校算法寒假训练营练习比赛(第三场)D.小牛vs小客-博弈
  2. 计算机一级试题论述,计算机一级考试理论题及答案要点
  3. 代码重新发布后docker服务会不会受影响_分享点经验 | 浅谈微服务架构
  4. MySql的事务操作与演示样例
  5. 「Mac新手必备」自定义 Mac 上的控制中心和菜单栏
  6. 并查集路径压缩_并查集简单教学
  7. 一本通 1194:移动路线
  8. Python中单引号,双引号和三引号各自的作用
  9. Backstepping(反步法)控制初学讲解
  10. Say Hello to Integers (Java)
  11. 两招让你成为牛X的T型人才
  12. 小故事让你秒懂“资产证券化”
  13. PaddlePaddle - 人脸关键点检测课程笔记
  14. 基于SVN的项目管理——集中与分散
  15. Android四大组件之一服务
  16. oracle调优概述
  17. VS(Visual studio)各版本密钥汇总
  18. windows共享打印机机器定时清理连接会话的问题
  19. 红米手机计算机的隐藏功能,红米手机按键隐藏神功能,米粉很多人都不全懂!...
  20. 数字三角形(java)

热门文章

  1. linux安装软件源有问题,opensuse软件安装源问题
  2. excel中用正则匹配_Excel利用正则表达式匹配和替换内容
  3. php老师把毕生的功力,为了表现雨下的凶残程度,网友都使出了毕生的功力
  4. x requested with php,PHP / Ajax“Vary:X-Requested-With”对我不起作用!
  5. Mark - HDFS性能压测工具
  6. 手机QQ2008下载地址
  7. 【愚公系列】2021年11月 攻防世界-进阶题-MISC-025(Miscellaneous-200)
  8. 产品思维的修炼–技术的必修课
  9. 油烟净化器如何判断质量好坏?
  10. 安卓桌面软件哪个好_桌面美化软件,你在用哪个?这个不用会后悔的!强烈推荐...