【题解】

  状压DP. f[i]表示现在的点是否连接的状态是i.

 #include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
#define rg register
#define N 5000
#define inf (0X7f7f7f7f)
using namespace std;
int n,m,ans=2e9,f[N],dis[],w[N][N];
inline int read(){
int k=,f=; char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(''<=c&&c<='')k=k*+c-'',c=getchar();
return k*f;
}
void dfs(int x){
for(rg int i=;i<=n;i++)if(<<(i-)&x)
for(rg int j=;j<=n;j++)if(w[i][j]!=inf&&(<<(j-)&x)==)
if(f[x|(<<(j-))]>f[x]+dis[i]*w[i][j]){
int d=dis[j];
dis[j]=dis[i]+;
f[x|(<<(j-))]=f[x]+dis[i]*w[i][j];
dfs(x|(<<(j-)));
dis[j]=d;
}
}
int main(){
n=read(); m=read();
memset(w,inf,sizeof(w));
for(rg int i=;i<=m;i++){
int u=read(),v=read(),d=read();
w[u][v]=w[v][u]=min(w[u][v],d);
}
for(rg int i=;i<=n;i++){
memset(f,inf,sizeof(f));
memset(dis,inf,sizeof(dis));
dis[i]=; f[<<(i-)]=;
dfs(<<(i-));
ans=min(ans,f[(<<n)-]);
}
printf("%d\n",ans);
return ;
}

最新文章

  1. HBase中批量修改
  2. [网络流24题] 太空飞行计划(cogs 727)
  3. angularjs学习资料
  4. OBject copy 和retain区别
  5. [自娱自乐] 4、超声波测距模块DIY笔记(四)——终结篇&#183;基于C#上位机软件开发
  6. 二分搜索法(转载自vanezkw)
  7. IBatis.net 输出SQL语句(七)
  8. Java之Map
  9. MongoDB[mark]总忘记它们是干啥的
  10. C++中的栈和队列
  11. Java 多线程 笔记 转自http://www.cnblogs.com/lwbqqyumidi/p/3804883.html
  12. 【2019雅礼集训】【最大费用流】【模型转换】D2T3 sum
  13. R语言如何将字符串转变为命令执行
  14. 互评Alpha版本—SkyHunter
  15. IDC 知识库
  16. C#枚举(enum)、常量(const)和readonly
  17. git提交代码
  18. 低于0.01%的极致Crash率是怎么做到的?
  19. SpringBoot_10_打成jar包后使用外部配置文件中的配置来启动工程
  20. C#检测应用程序重复启动----函数检测(可以在多用户登录情况下检测)

热门文章

  1. [POI2012]FES-Festival
  2. 18. 视图Ext.Viewport和窗口Ext.Window用法
  3. MySQL5.6 windows msi安装介绍
  4. log4j日志基本配置
  5. vue.js学习文档
  6. 【hdu多校联考第二场】Odd Shops
  7. 【[转】MySql模糊查询
  8. C语言学习(1)-环境配置
  9. php函数的声明与使用
  10. NodeJs学习记录(六)使用 res.locals 传递参数到页面