poj 3925 枚举+prime
来源:互联网 发布:微信收费群设置 知乎 编辑:程序博客网 时间:2024/05/01 12:26
/*因为15很小可以暴力枚举然后用最小生成树的prim来计算*/#include<stdio.h>#include<string.h>#include<math.h>#define N 40#define inf 0x3fffffffint a[N],f[N],en[N];int ma[N][N],n,m;double dd;void prime(){ int i,j,vv[N],dis[N],sum,total; double rato; for(i=1;i<=m;i++) dis[i]=inf; sum=a[f[1]]; //printf("%d ",f[1]); for(i=2;i<=m;i++) { // printf("%d ",f[i]); if(ma[f[1]][f[i]]!=inf) dis[f[i]]=ma[f[1]][f[i]]; sum+=a[f[i]]; } //printf("\n"); total=0; memset(vv,0,sizeof(vv)); vv[f[1]]=1; for(i=1;i<=m-1;i++) { int minn=inf,index; for(j=1;j<=m;j++) if(!vv[f[j]]&&minn>dis[f[j]]) { minn=dis[f[j]]; index=f[j]; } //printf("%d\n",minn); total+=minn; vv[index]=1; for(j=1;j<=m;j++) if(!vv[f[j]]&&dis[f[j]]>ma[index][f[j]]) dis[f[j]]=ma[index][f[j]]; } // printf("%d %d\n",total,sum); rato=1.0*total/(1.0*sum); if(rato<dd) { dd=rato; for(i=1;i<=m;i++) en[i]=f[i]; } return ;}void dfs(int i,int cou) { if(cou==m) { prime(); } for(;i<=n;i++) { f[cou+1]=i; dfs(i+1,cou+1); }}int main() { int i,j; while(scanf("%d%d",&n,&m),n||m) { for(i=1;i<=n;i++) scanf("%d",&a[i]); for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%d",&ma[i][j]); dd=inf; for(i=1;i<=n;i++) { f[1]=i; dfs(i+1,1); } for(i=1;i<=m-1;i++) printf("%d ",en[i]); printf("%d\n",en[i]); }return 0;}
0 0
- poj 3925 枚举+prime
- 【POJ 3126】Prime Path(枚举+BFS)
- USACO-Prime Cryptarithm(枚举)
- POJ 1811 Prime Test
- POJ 1365 Prime Land
- POJ Prime Distance
- poj 1811 Prime Test
- poj 3518 Prime Gap
- POJ 1811 Prime Test
- poj 2689 Prime Distance
- POJ 1811 Prime Test
- poj 1811 Prime Test
- POJ 3126 Prime Path
- poj 2421(prime)
- poj 1595 Prime Cuts
- poj 3518 Prime Gap
- POJ 3126 Prime Path
- poj 3126Prime Path
- Reference
- solr solr.xml
- DP
- 背包问题1
- lazy load plugin for jQuery
- poj 3925 枚举+prime
- 网站模拟点击软件|全能模拟王-www.mf0188.com
- 开源安全工具汇总
- 常使用的链接
- Android内存优化(一)
- 中国剩余定理:结合poj1006
- Adobe Gaming SDK 内置ProductStore详解
- mybatis 框架简单实例
- MAKING A BAYESIAN MODEL TO INFER UBER RIDER DESTINATIONS