HDU 2489 Prim+DFS
来源:互联网 发布:微分销源码 编辑:程序博客网 时间:2024/06/17 08:30
因为是完全图,所以可以采用如下的方式进行DFS搜索,枚举出每一种情况,然后用Prim进行计算。
#include<cstdio>#include<cstring>#define N 20int n,m,vis[N], ans[N], pre[N], hash[N];double G[N][N], weight[N], minCost[N], minRatio;double prim(){ memset(hash, 0, sizeof(hash)); int u; for(int i=1; i<=n; ++i)if(vis[i]){ u=i; break; } hash[u] = 1; double weightSum=0, edgeSum=0; for(int i=1; i<=n; ++i)if(vis[i]){ minCost[i] = G[u][i]; pre[i] = u; weightSum += weight[i]; } for(int i=1; i<m; ++i){ u=-1; for(int j=1; j<=n; ++j)if(vis[j]&&!hash[j]){ if(u==-1 || minCost[u]>minCost[j]) u=j; } edgeSum += G[pre[u]][u]; hash[u] = 1; for(int j=1; j<=n; ++j)if(vis[j]&&!hash[j]){ if(minCost[j] > G[u][j]){ minCost[j] = G[u][j]; pre[j] = u; } } } return edgeSum/weightSum;}void dfs(int u, int num){ if(num>m) return; if(u==n+1){ if(num!=m) return; double t=prim(); if(t<minRatio){ minRatio = t; memcpy(ans, vis, sizeof(vis)); } return; } vis[u] = 1; dfs(u+1, num+1); vis[u] = 0; dfs(u+1, num);}int main(){ while(~scanf("%d%d",&n,&m)){ if(!n&&!m) break; for(int i=1; i<=n; ++i) scanf("%lf",&weight[i]); for(int i=1; i<=n; ++i) for(int j=1; j<=n; ++j) scanf("%lf",&G[i][j]); memset(vis, 0, sizeof(vis)); minRatio = 100000000; dfs(1, 0); bool flag=false; for(int i=1; i<=n; ++i)if(ans[i]){ if(flag) printf(" %d", i); else { printf("%d",i); flag=true; } } puts(""); } return 0;}
- HDU 2489 Prim+DFS
- hdu 2489 (dfs枚举 + prim)
- hdu 2489 Minimal Ratio Tree(prim+dfs)
- HDU 2489 Minimal Ratio Tree (dfs+Prim最小生成树)
- HDU 2489 Minimal Ratio Tree(prim+DFS)
- HDU 2489 Minimal Ratio Tree(DFS+prim)
- HDU 2489 Minimal Ratio Tree (DFS枚举+最小生成树Prim)
- HDU 2489 Minimal Ratio Tree(dfs+最小生成树-Prim)
- HDU 2489 Minimal Ratio Tree(dfs+最小生成树-Prim)
- prim+dfs 藏宝图
- hdu2489(prim+dfs)
- hdu 2489 MST+dfs
- hdu 1875 Prim
- Prim 模板 hdu 1879
- hdu 1162 prim算法
- hdu 1301 prim算法
- HDU-1233(prim写法)
- HDU 4081 prim水题
- centos 6.3下安装adobe flash player
- [转]URL重写规则学习和应用实例
- 如何让自己拥有更多的时间——《暗时间》阅读笔记(一)
- 使用webdriver中的JavascriptExecutor执行js改变DOM属性
- linux系统ssh的验证与安装
- HDU 2489 Prim+DFS
- 深入云存储系统Swift核心组件:Ring实现原理剖析
- hdu4640 && hdu4281
- zoj 1008 Gnome Tetravex (dfs+剪枝)
- java jdk API中英文下载
- 类似淘宝的星星打分
- PHP程序员函数注释规格
- C# BitArray 实例
- hdu 4276 The Ghost Blows Light(树形DP)