hdu 3001 Travelling(状态压缩dp)
来源:互联网 发布:mac如何设置默认输入法 编辑:程序博客网 时间:2024/05/22 13:45
一个点可以走两次,看起来还是有点懵逼的,看题解才知道压缩到三进制,涨知识。
参考题解:http://www.cnblogs.com/martinue/p/5490432.html
dp[S][j]中S表示当前已经访问过的节点集合是S,当前所在顶点为j,dp[S][j]就表示从j出发访问剩余的所有节点的最小花费。
#include <bits/stdc++.h>using namespace std;const int INF = 0x7f7f7f7f;int st[11];int G[11][11];int dp[60000][11];int digit[60000][11];int n,m;void init(){ st[0] = 1; for(int i = 1; i < 11; ++i) st[i] = st[i-1]*3; for(int i = 0; i < st[10]; ++i) { int temp = i; for(int j = 0; j < 10; ++j) { digit[i][j] = temp%3; temp /= 3; } }}int main(){ init(); int u,v,w; while(scanf("%d %d",&n,&m) != EOF) { memset(G,0x7f,sizeof(G)); memset(dp,0x7f,sizeof(dp)); while(m--) { scanf("%d %d %d",&u,&v,&w); if(w < G[u-1][v-1]) G[u-1][v-1] = G[v-1][u-1] = w; } for(int i = 0; i < n; ++i) dp[st[i]][i] = 0; int res = INF; for(int j = 0; j < st[n]; ++j) { bool flag = true; for(int i = 0; i < n; ++i) { if(digit[j][i] == 0) flag = false; if(dp[j][i] != INF) { for(int k = 0; k < n; ++k) { if(G[k][i]!= INF && digit[j][k] != 2) { dp[j+st[k]][k] = min(dp[j+st[k]][k],dp[j][i]+G[k][i]); } } } } if(flag) { for(int i = 0; i < n; ++i) res = min(res,dp[j][i]); } } printf("%d\n",res>=INF?-1:res); } return 0;}
阅读全文
0 0
- HDU 3001 Travelling(状态压缩DP)
- hdu 3001 Travelling(状态压缩dp)
- hdu 3001 Travelling//状态压缩DP
- HDU 3001 Travelling (状态压缩DP)
- HDU 3001 Travelling(DP状态压缩)
- HDU 3001 Travelling(状态压缩dp)
- HDU 3001 Travelling(状态压缩dp)
- hdu 3001 Travelling (状态压缩dp-----模拟三进制)
- HDU 3001 Travelling (三进制状态压缩 DP)
- hdu 3001 Travelling (状态压缩dp,三进制!)
- HDU 3001 Travelling (状态压缩DP +TSP问题)
- HDU 3001--Travelling(状态压缩+tsp)
- HDU - 3001 Travelling (状态压缩)
- hdu 3001 travelling 状态压缩
- HDU 3001 Travelling ( 状态压缩 )
- HDU 3001 Travelling 状态压缩DP简单题
- HDU 3001 Travelling (三进制状态压缩DP+BFS)
- hdu 3001 Travelling 3进制状态压缩dp
- java开发ssm-spring
- vsftpd配置文件详解
- 计蒜客 最后一个单词的长度
- 瑞萨半导体回归图像传感器业务
- Codeforces Round #433 Div. 2 C
- hdu 3001 Travelling(状态压缩dp)
- 给图像加噪声
- 主机租用 选择优质机房很重要
- 学生信息
- 一种破解加密软件的方法
- Python切片问题
- ubuntu系统下使用openocd (野火的仿真器)下载stm32f103程序
- c/c++基础知识点
- httpClient发送HTTP请求简单示例