Hamilton回路 旅行商TSP问题 /// dp oj1964
题目大意:
给出一个n个顶点的无向图,请寻找一条从顶点0出发,遍历其余顶点一次且仅一次、最后回到顶点0的回路——即Hamilton回路。
多测试用例。每个测试用例:
第一行,两个正整数 n 和 e ,0 < n ≤ 21 ,n < e < n×n/2 ,表示该无向图的顶点个数,以及边的数量。顶点编号是0~n-1
第二行至e+1行,每行3个非负整数 u , v 和 w ,分别表示顶点u与顶点v之间有一条边,其权值为w 。
如果存在多条Hamilton回路,请输出长度最小的回路的路径长度。
如果不存在Hamilton回路,请输出 no Hamilton circuit
4 5
0 1 50
0 3 9
0 2 3
1 2 3
1 3 13
28
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define N 21
using namespace std;
int n,m,G[N][N],dp[<<N][N]; void solve()
{
memset(dp,INF,sizeof(dp));
int ed=(<<n)-; // 点为0~n-1
dp[][]=; // 初始状态0点已走过且位于0点
for(int i=;i<=ed;i++) /// 枚举顺推下去的所有状态
for(int j=;j<n;j++) { /// 枚举该状态下要去的点
if(<<j&i) continue; // 若该状态已经曾走过j点 则忽略
for(int k=;k<n;k++) { /// 枚举j点的前驱点
if(<<k&i) // 若该状态曾经走过k点 则更新 不曾走过则忽略
dp[<<j|i][j]=min(dp[<<j|i][j],dp[i][k]+G[k][j]);
} /// 由i状态且最后位于k点 延伸到 j点走过且最后位于j点的状态
} int ans=INF;
for(int i=;i<n;i++) /// 每个点都走过且最后位于i 再加上i点回到0点的路径
ans=min(ans,dp[ed][i]+G[i][]); if(ans==INF) printf("no Hamilton circuit\n");
else printf("%d\n",ans); // for(int i=1;i<=ed;i++){
// for(int j=0;j<n;j++){
// if(dp[i][j]==INF) printf("-1 ");
// else printf("%d ",dp[i][j]);
// }printf("\n");
// }
}
int main()
{
while(~scanf("%d%d",&n,&m)) {
memset(G,INF,sizeof(G));
while(m--) {
int u,v,w; scanf("%d%d%d",&u,&v,&w);
G[u][v]=G[v][u]=min(G[u][v],w);
}
solve();
} return ;
}
Hamilton回路 旅行商TSP问题 /// dp oj1964的更多相关文章
- 二进制状态压缩dp(旅行商TSP)POJ3311
http://poj.org/problem?id=3311 Hie with the Pie Time Limit: 2000MS Memory Limit: 65536K Total Subm ...
- 遗传算法的简单应用-巡回旅行商(TSP)问题的求解
上篇我们用遗传算法求解了方程,其中用到的编码方式是二进制的编码,实现起来相对简单很多, 就连交配和变异等操作也是比较简单,但是对于TSP问题,就稍微复杂一点,需要有一定的策略, 才能较好的实现. 这次 ...
- ACM/ICPC 之 数据结构-邻接表+DP+队列+拓扑排序(TSH OJ-旅行商TSP)
做这道题感觉异常激动,因为在下第一次接触拓扑排序啊= =,而且看了看解释,猛然发现此题可以用DP优化,然后一次A掉所有样例,整个人激动坏了,哇咔咔咔咔咔咔咔~ 咔咔~哎呀,笑岔了- -|| 旅行商(T ...
- 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法
若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...
- hdu 4281 Judges' response(多旅行商&DP)
Judges' response Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 洛谷P1523 旅行商简化版(DP)
题目: P1523 旅行商简化版 解析 可以看做是两个人同时从西往东走,经过不一样的点,走到最东头的方案数 设\(f[i][j]\)表示一个人走到i,一个人走到j的最短距离(\(i<j\)) 第 ...
- P1523 旅行商简化版
P1523 旅行商简化版 题目背景 欧几里德旅行商(Euclidean Traveling Salesman)问题也就是货郎担问题一直是困扰全世界数学家.计算机学家的著名问题.现有的算法都没有办法在确 ...
- vijosP1014 旅行商简化版
vijosP1014 旅行商简化版 链接:https://vijos.org/p/1014 [思路] 双线DP. 设ab,ab同时走.用d[i][j]表示ab所处结点i.j,且定义i>j,则有转 ...
- 洛谷【P1523】旅行商的背包(算法导论 15-1) 题解
P1523 旅行商简化版 题目背景 欧几里德旅行商\((Euclidean Traveling Salesman)\)问题也就是货郎担问题一直是困扰全世界数学家.计算机学家的著名问题.现有的算法都没有 ...
随机推荐
- delphi 文件存取方法与文件管理组件
9.2 文件存取方法与文件管理组件 9.2.1 存取文件的类方法 Delphi在许多需要与文件打交道的类中定义了文件存取方法,使用这些方法可以非常方便地将类中的数据保存到文件中,或从文件中读取所需 ...
- Zookeeper_ZAB协议
ZAB协议 ZAB协议简介 ZAB:(Zookeeper Atomic Broadcast),zk原子消息广播协议,是专为ZK设计的一中支持崩溃恢复的原子广播协议,是一种Paxos协议的优化算法,在Z ...
- poi之Excel下载之详细设置
1.设置标题格式 /** * HEAD样式 * * @param workbook * @param sheet */ public void setHeadCellStyles(HSSFWorkbo ...
- hive shell参数
Hive Shell参数 1.Hive命令行 语法结构 hive [-hiveconf x=y]* [<-i filename>]* [<-f filename>|<-e ...
- NX二次开发-UFUN获取块的参数UF_MODL_ask_block_parms
NX11+VS2013 #include <uf.h> #include <uf_modl.h> #include <uf_ui.h> UF_initialize( ...
- github如何用浏览器直接打开项目里的html页面?
very easy 第一步 点击html页面 第二步,在地址栏前加 htmlpreview.github.io/?就可以访问
- android 签名生成和签名验证
keytool -genkey -alias lingni -keyalg RSA -validity -keystore lingni.keystore -alias 是别名 lingni.keys ...
- arcgis api for javascipt 输出图片
地图模板制作-发布-gpurl调用 window.open可以直接打开url链接. saveas可以另存,仅支持ie浏览器 <!DOCTYPE html><html><h ...
- linux 重定向命令
标准输入,输出和错误 --------------------------------- 文件文件 描写叙述符 ----------------------------- ...
- RoadFlowCore 解决方案介绍及开发概述
RoadFlow解决方案如下: RoadFlow.Business:业务层 RoadFlow.Integrate:组织机构获取层(如果你系统要使用第三方组织架构的时候修改这里面的方法即可) RoadF ...