题目:HDU3001

#include <bits/stdc++.h>
using namespace std;
int state[],vis[][],dis[][];
int n,m,dp[][];
void init()//预处理三进制状态
{
state[]=;
for(int i=;i<=;i++) state[i]=state[i-]*;//最多10个点,要处理到11
for(int i=;i<=state[];i++)
{
int tmp=i;
for(int j=;j<=;j++){// 把10位都处理一下
vis[i][j]=tmp%;
tmp/=;
}
}
}
int main()
{
init();
while(cin>>n>>m)
{
memset(dp,,sizeof(dp));
memset(dis,,sizeof(dis));
int inf=dp[][];
for(int i=;i<=n;i++)
dp[state[i]][i]=;
for(int i=;i<=m;i++)
{
int l,r,w;
cin>>l>>r>>w;
dis[l][r]=dis[r][l]=min(dis[l][r],w);
}
int ans=inf;
for(int i=;i<state[n+];i++)//枚举状态
{
bool flag=;
for(int j=;j<=n;j++)//枚举状态的每一位
{
if(!vis[i][j]) flag=;//本状态没有达成目的
if(dp[i][j]==inf) continue;//没有前驱
for(int k=;k<=n;k++)//枚举下一个节点
{
if(vis[i][k]>=) continue;
if(dis[j][k]==inf) continue;//没有路
dp[i+state[k]][k]=min(dp[i+state[k]][k],dp[i][j]+dis[j][k]);
}
}
if(flag){
for(int j=;j<=n;j++) ans=min(ans,dp[i][j]);
}
}
if(ans==inf) cout<<-<<endl;
else cout<<ans<<endl;
}
}

最新文章

  1. C#设计模式-装饰者模式
  2. sed 字符串替换
  3. 给文本框添加模糊搜索功能(“我记录”MVC框架下实现)
  4. 【Android 进阶】临时卸载root和恢复root功能
  5. PHP 文件上传类
  6. Thread create 创建进程
  7. 用正则表达式获取所有img标签
  8. javascript体系 DOM原理
  9. U-BOOT配置过程
  10. 归并树 划分树 可持久化线段树(主席树) 入门题 hdu 2665
  11. Android 绘图工具库AChartEngine
  12. curl讲解第一篇---入门和基本使用
  13. 多线程工具类:CountDownLatch、CyclicBarrier、Semaphore、LockSupport
  14. 【emWin】例程十二:FontCvt生成字库
  15. Docker小白从零入门实战
  16. 配置HDFS HttpFS和WebHDFS
  17. javaScriptObject转String
  18. java多线程(一)之继承Thread类
  19. 部署Jar包到远程Maven仓库
  20. 01-maven环境配置

热门文章

  1. Silverlight 2.5D RPG游戏技巧与特效处理:(十一)AI系统
  2. AJ学IOS 之微博项目实战(9)微博模型之时间相关重要操作,判断刚刚,昨天,今年等等
  3. js使用经验--遍历
  4. webWMS开发过程记录(四)- 整体设计
  5. 你知道如何自动保存 Spring Boot 应用进程号吗
  6. 提升效率必备!8个超好用的Python内置函数
  7. css特效sh
  8. radio样式
  9. Java 中正则表达式使用
  10. pytorch实现MLP并在MNIST数据集上验证