hdu3001 Travelling
Travelling
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2520 Accepted Submission(s): 735
1 2 100
3 2
1 2 40
2 3 50
3 3
1 2 3
1 3 4
2 3 10
90
7
#include <iostream>
#include <stdio.h>
using namespace std;
int threenum[11]={1,3,9,27,81,243,729,2187,6561,19683,59049};
#define inf 0x4f4f4f4f
int dp[600000][15],n,m;
int threeevery[600000][15],dis[15][15];
int fmin(int x,int y){if(x<y)return x;return y;}
void makethree()//先预处理,算出所有的值
{
int i,temp,j;
for(i=0;i<threenum[10];i++)//3的11次
{
temp=i;
for(j=0;j<10;j++)
{
threeevery[i][j]=temp%3;
temp=temp/3;
}
} }
void init()
{
int i,j,s,e,val;
for(i=0;i<threenum[n];i++)
{
for(j=0;j<n;j++)
{
dp[i][j]=inf;
}
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
dis[i][j]=inf;
}
for(i=0;i<n;i++)
{
dp[threenum[i]][i]=0;//到自已的点初始化为0
} for(i=0;i<m;i++)
{ scanf("%d%d%d",&s,&e,&val);
s--;e--;//全部从0开
if(val<dis[s][e])
dis[s][e]=dis[e][s]=val;//排除重边取最小值 } }
int makedp()
{
int i,j,k,minx;
bool flag;
minx=inf;
for(i=0;i<threenum[n];i++)//对于每一位都要计算
{
flag=true;//标记是否每一个点都已经经过
for(j=0;j<n;j++)
{
if(threeevery[i][j]==0)//是这个点没有走
flag=false;
if(dp[i][j]==inf)//没有走过
{
continue;
}
for(k=0;k<n;k++)//加入k这个点
{
if((j==k)||threeevery[i][k]>=2||(dis[j][k]==inf))//自已到自已的地方,经过超过两次,不相连通去掉
continue;
dp[i+threenum[k]][k]=fmin(dp[i+threenum[k]][k],dp[i][j]+dis[j][k]);//从j到k
} }
if(flag)//满足条件,对最小值进行更新
{
for(j=0;j<n;j++)
{
minx=fmin(dp[i][j],minx);
}
}
}
if(minx==inf)
{
minx=-1;
} printf("%d\n",minx);
return 1;
}
int main()
{
makethree();
while(scanf("%d%d",&n,&m)!=EOF)
{
init();
makedp();
}
return 0;
}
hdu3001 Travelling的更多相关文章
- hdu3001Travelling
参考了别人的代码 https://blog.csdn.net/u010372095/article/details/38474721 深感自己的弱小 这是tsp问题,和基本的tsp问题没什么大的区 ...
随机推荐
- I.MX6 Ethernet UI patch failed
/*********************************************************************** * I.MX6 Ethernet UI patch f ...
- angular依赖注入的理解(转)
使用过java进行开发的人肯定知道大名鼎鼎的spring框架,对于spring的IOC肯定也有所了解,通过配置文件定义好bean之后,如果需要使用这些bean,不需要自己去实例化,而是跟spring这 ...
- 【C#学习笔记】打开对话框并返回打开文件所在路径
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 解决IE6下png图片不透明
ie6着实是非常让人讨厌,显示一张图片,也要带着灰白色的背景色,一张好好的png图片就这么不透明了. 用n多中网上的方式,差点成功的就还有这个了 _background: none; _filter: ...
- 解决WCF大数据量传输 ,System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接
开发中所用的数据需要通过WCF进行数据传输,结果就遇到了WCF大量传输问题 也就是提示System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接 网上解决 ...
- 在stm32上移植wpa_supplicant(二)
第一层调用的移植和裁剪. wpa_supplicant_init 照论文的指示,删除wpa_params和wpa_global相关的东西.初始化流程也相当简单,driver初始化,eap_regist ...
- HDU5777 domino (BestCoder Round #85 B) 思路题+排序
分析:最终的结果肯定会分成若干个区间独立,这些若干个区间肯定是独立的(而且肯定是一边倒,左右都一样) 这样想的话,就是如何把这n-1个值分成 k份,使得和最小,那么就是简单的排序,去掉前k大的(注意l ...
- 【剑指offer 面试题14】调整数组顺序使奇数位于偶数前面
思路: 头尾指针,向中间遍历,依据条件交换元素. #include <iostream> using namespace std; void reOrder(int *pData, uns ...
- OpenGL超级宝典第5版&&GLSL法线变换
在GLSL中,有一些情况需要把局部坐标系下的向量或点转换到视点坐标系下,如光照计算时,需要把法向转化到视点坐标系.如果是模型上一点p 转化到视点坐标系下,直接(model-view matrix )* ...
- web服务器分析与设计(一)
自己写一个简单的服务器. 面向对象分析与设计第一步:获取需求(基于用例) 功能:1,支持html静态网页,2,支持常用HTTP请求,且容易扩展支持不现请求 3,可以发布站点 补充:至于对动态网页等高级 ...