传送门

题意:找一个经过所有边权值最小的回路,$n \le 15$


所有点度数为偶则存在欧拉回路,直接输出权值和

否则考虑度数为奇的点,连着奇数条边,奇点之间走已经走过的路移动再走没走过的路

然后大体想一想就是权值和加上奇点的最小权匹配啦

蒟蒻不会带花树就打了状压$DP$

$f[s]$表示已经选的集合为$s$,考虑当前未选的最小点和哪一个未选的点匹配

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=,S=(<<)+,INF=1e9;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} int n,m,u,v,w,d[N][N],de[N];
void floyd(){
for(int k=;k<=n;k++)
for(int i=;i<=n;i++) if(d[i][k]<INF)
for(int j=;j<=n;j++)
d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
}
int a[N],p,f[S];
void dp(){
//for(int i=1;i<=p;i++) printf("a %d\n",a[i]);
memset(f,0x3f,sizeof(f));
f[]=;
int All=<<p;
for(int s=;s<All;s++){
int i=;
while((<<i)&s) i++;
for(int j=i+;j<p;j++) if( !((<<j)&s) )
f[s|(<<i)|(<<j)]=min(f[s|(<<i)|(<<j)],f[s]+d[a[i]][a[j]]);
}
}
int main(){
freopen("in","r",stdin);
while( (n=read()) ){
m=read();
for(int i=;i<=n;i++){
de[i]=;
for(int j=;j<=n;j++) if(i!=j) d[i][j]=INF;
}
int sum=;
for(int i=;i<=m;i++){
u=read(),v=read(),w=read();
d[u][v]=d[v][u]=min(d[u][v],w); sum+=w;
de[u]++;de[v]++;
}
p=;
for(int i=;i<=n;i++) if(de[i]&) {a[p++]=i;}
if(!p) {printf("%d\n",sum);continue;} floyd();
dp();
printf("%d\n",sum+f[(<<p)-]);
}
}

POJ 2404 Jogging Trails [DP 状压 一般图最小权完美匹配]的更多相关文章

  1. POJ 2404 Jogging Trails(最小权完美匹配)

    [题目链接] http://poj.org/problem?id=2404 [题目大意] 给出一张图,求走遍所有的路径至少一次,并且回到出发点所需要走的最短路程 [题解] 如果图中所有点为偶点,那么一 ...

  2. lightoj 1086 - Jogging Trails(状压dp)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1086 题解:题目就是求欧拉回路然后怎么判断有欧拉回路只要所有点的度数为偶数.那 ...

  3. POJ 2404 Jogging Trails

    Jogging Trails Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2122   Accepted: 849 Des ...

  4. poj 2288 Islands and Bridges ——状压DP

    题目:http://poj.org/problem?id=2288 状压挺明显的: 一开始写了(记忆化)搜索,但一直T: #include<iostream> #include<cs ...

  5. 【HDU】4352 XHXJ's LIS(数位dp+状压)

    题目 传送门:QWQ 分析 数位dp 状压一下现在的$ O(nlogn) $的$ LIS $的二分数组 数据小,所以更新时直接暴力不用二分了. 代码 #include <bits/stdc++. ...

  6. 【BZOJ】1076 [SCOI2008]奖励关 期望DP+状压DP

    [题意]n种宝物,k关游戏,每关游戏给出一种宝物,可捡可不捡.每种宝物有一个价值(有负数).每个宝物有前提宝物列表,必须在前面的关卡取得列表宝物才能捡起这个宝物,求期望收益.k<=100,n&l ...

  7. POJ 3565 Ants 【最小权值匹配应用】

    传送门:http://poj.org/problem?id=3565 Ants Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: ...

  8. 【POJ 2195】 Going Home(KM算法求最小权匹配)

    [POJ 2195] Going Home(KM算法求最小权匹配) Going Home Time Limit: 1000MS   Memory Limit: 65536K Total Submiss ...

  9. POJ 1185 炮兵阵地(状压DP)

    炮兵阵地 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 26426   Accepted: 10185 Descriptio ...

随机推荐

  1. .NET MongoDB Driver 2.2 API注释

    主要内容 1 MongoClient 1.1构造函数 1.2 方法 2 IMongoDatabase 3 IMongoCollection 4 IMongoCollectionExtensions 5 ...

  2. JAVA经典算法面试40题及答案

    现在是3月份,也是每年开年企业公司招聘的高峰期,同时有许多的朋友也出来找工作.现在的招聘他们有时会给你出一套面试题或者智力测试题,也有的直接让你上机操作,写一段程序.算法的计算不乏出现,基于这个原因我 ...

  3. [国嵌攻略][065][DM9000驱动程序设计]

    移植代码:通过已有的可用的代码修改到新环境下运行. 代码编写: 初始化网卡 1.选中网卡 nLAN_CS BWSCON(0x48000000) DW4:01 16bit BANKCON4(0x4800 ...

  4. php中使用head进行二进制流输出,让用户下载PDF等附件的方法

    http://blog.csdn.net/jallin2001/article/details/6872951 在PHP的手册中,有如下的方法,可以让用户方便的下载pdf或者其他类似的附件形式,不过这 ...

  5. Yourphp  使用说明

    https://wenku.baidu.com/view/c8d2e667cc1755270722088a.html 这个是站点的配置信息,比如:网站名称. LOGO .网站标题等 推荐位:个别可能用 ...

  6. 个人Vue-1.0学习笔记

    dVue.js是类似于angular.js的一套构建用户界面的渐进式框架,只关注视图层, 采用自底向上增量开发的设计. Vue.js的代码需要放置在指定的HTML元素后面. 关于Vue的数据绑定: 例 ...

  7. SSH会话连接超时问题

    目前大多数ssh服务是运行在Linux系统上的sshd服务.当访问终端在windows上时,各终端软件,如,putty,SecureCRT等,大多支持设置向服务器端自动发送消息,来防止终端定期超时.其 ...

  8. mac通过自带的ssh连接Linux服务器并上传解压文件

    需求: 1:mac连接linux服务器 2:将mac上的文件上传到linux服务器指定位置 3:解压文件 mac上使用命令,推荐使用 iterm2 .当然,也可以使用mac自带的终端工具. 操作过程: ...

  9. 获取select中的值

    分别使用javascript原生的方法和jquery方法<select id="test" name=""> <option value=&q ...

  10. 邓_ phpcms_

    {pc:content action="lists" catid="$catid" num="10" order="id DESC ...