Light OJ 1086 Jogging Trails (Floyd+状压DP)
来源:互联网 发布:单机游戏数据修改器 编辑:程序博客网 时间:2024/05/18 21:50
题意:给出一个图,求从任意一点出发遍历所有的边后回到起点的最短路径长度。
解析:对于每一个节点,进和出的次数都是相同的,所以如果该节点度数是偶数,则每条边都会经过一次,如果是奇数,应走一条最短路到另一个度数为奇数的点。
对节点度数进行状压。
[code]:
#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<algorithm>#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1using namespace std;const int inf = 0x3f3f3f3f;int n,m,deg[20],dp[1<<20],g[20][20];int dfs(int S){ if(!S) return dp[S] = 0; if(dp[S]!=-1) return dp[S]; int i,j; int ans = inf; for(i = 1;i <= n;i++){ if(!(S>>i&1)) continue; for(j = i+1;j <= n;j++){ if(!(S>>j&1)) continue; ans = min(ans,dfs(S^(1<<i)^(1<<j))+g[i][j]); } } return dp[S] = ans;}int main(){ int i,j,k,cas,T; scanf("%d",&cas); for(T = 1;T <= cas;T++){ int u,v, w; scanf("%d%d",&n,&m); memset(deg,0,sizeof(deg)); for(i = 1;i <= n;i++) for(j = 1;j <= n;j++) g[i][j] = (i==j)?0:inf; int ans = 0; while(m--){ scanf("%d%d%d",&u,&v,&w); ans += w;deg[u]++;deg[v]++; g[u][v] = g[v][u] = min(g[u][v],w); } for(k = 1;k <= n;k++) for(i = 1;i <= n;i++) for(j = 1;j <= n;j++) g[i][j] = min(g[i][j],g[i][k]+g[k][j]); int S = 0; for(i = 1;i <= n;i++) S += (1<<i)*(deg[i]&1); memset(dp,-1,sizeof(dp)); printf("Case %d: %d\n",T,ans+dfs(S)); } return 0;}
0 0
- Light OJ 1086 Jogging Trails (Floyd+状压DP)
- Light oj 1086 - Jogging Trails(状压dp 将图变成欧拉图)
- 1086 - Jogging Trails (欧拉回路+dp)
- uva 10296 - Jogging Trails (中国邮路问题 状压dp)
- poj 2404 Jogging Trails 状压dp
- lightoj1086 - Jogging Trails(状态压缩dp)
- LightOJ - 1086 Jogging Trails(欧拉+状态压缩)
- POJ-2404 Jogging Trails (中国邮递员)
- POJ 2404 Jogging Trails (中国邮递员问题,状态压缩DP)
- JOJ1871:Jogging Trails
- FZU1009 Jogging Trails
- POJ 2404 Jogging Trails
- lightoj1086 Jogging Trails
- POJ2404:Jogging Trails
- [中国邮路问题 欧拉回路 最短路 一般图匹配||状压DP] FZU 1009 Jogging Trails
- Light OJ 1174 - Commandos (Floyd)
- UVA - 10296 Jogging Trails (中国邮路问题)
- POJ 2404 Jogging Trails 笔记
- 练习:最长回文子串(Manacher算法)
- 【Android开发小记--19】数据存储3--ContentProvider
- git之忽略文件(git_ignore)
- Java中Reflection机制的初步理解(二)
- Windows开发必备素质--何为Visual C++ Redistributable Package?
- Light OJ 1086 Jogging Trails (Floyd+状压DP)
- od使用之暴力破解入门
- 7.屏幕适配
- java : Eclipse 安装 ibator 插件
- VC支持十六(16)进制的字符串转换为数值函数strtoul
- sql server 无法连接到local的解决办法
- hiho #1138 : Islands Travel 【最短路】
- 1.Dao代码如何编写?
- 多系统如何共享蓝牙设备?