/*
因为15很小可以暴力枚举然后用最小生成树的prim来计算
*/
#include<stdio.h>
#include<string.h>
#include<math.h>
#define N 40
#define inf 0x3fffffff
int 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;
}

poj 3925 枚举+prime的更多相关文章

  1. {POJ}{3925}{Minimal Ratio Tree}{最小生成树}

    题意:给定完全无向图,求其中m个子节点,要求Sum(edge)/Sum(node)最小. 思路:由于N很小,枚举所有可能的子节点可能情况,然后求MST,memset()在POJ G++里面需要cstr ...

  2. 【POJ】1811 Prime Test

    http://poj.org/problem?id=1811 题意:求n最小素因子.(n<=2^54) #include <cstdio> #include <cstring& ...

  3. POJ - 1080 枚举 / DP

    要求max{F/P},先枚举下界lowf,再贪心求符合约束条件的n个最小价值和 记录F的离散值和去重可以大幅度常数优化 (本来想着用DP做的) (辣鸡POJ连auto都Complie Error) # ...

  4. poj 3189(枚举+多重匹配)

    题目链接:http://poj.org/problem?id=3189 思路:由于题目要求最小的差值,而Range最多也才20,因此我们可以枚举上下限,多重匹配验证即可. http://paste.u ...

  5. POJ 1753 (枚举+DFS)

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 40632   Accepted: 17647 Descr ...

  6. POJ 2560 Freckles Prime问题解决算法

    这个问题正在寻求最小生成树. 给定节点的坐标,那么我们需要根据各个点之间的这些坐标来计算距离. 除了这是标准的Prime算法的,能源利用Prime基本上,你可以使用Kruskal. 经典的算法必须填写 ...

  7. POJ 3279 枚举(思维)

    Fliptile Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10931   Accepted: 4029 Descrip ...

  8. POJ - 3279 枚举 [kuangbin带你飞]专题一

    这题很经典啊,以前也遇到过类似的题--计蒜客 硬币翻转. 不过这题不仅要求翻转次数最少,且翻转方案的字典序也要最小. 解法:二进制枚举第一行的翻转方案,然后处理第二行,如果第二行的k列的上一列是黑色, ...

  9. POJ - 1222 / POJ - 3279 枚举第一行

    说好的高斯消元法呢,暴搜都能0ms 这种翻转就是枚举第一行控制变量下面行就全都确定了 代码参考挑战程序设计例题 #include<iostream> #include<algorit ...

随机推荐

  1. Photoshop CC2019破解版

    Photoshop CC2019 精简版: 链接:https://pan.baidu.com/s/1PeFrhtLHxLRXCW_vMkAZDg  提取码:q6nl Photoshop CC2019: ...

  2. python中socket编程

    一.网络协议 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构(互联网中处处是C/S架构):B/S架构也是C/S架构的一种,B/S是浏览器/服务器 C/S架构与socket的关系: ...

  3. NodeJs学习记录(四)初学阶段关于app.js里的一些重要配置

    app.set('views', path.join(__dirname, 'views')); 以上代码用于配置页面文件(例如 .ejs 文件)的根目录, 设置之后 访问 ./index 则等同于访 ...

  4. Sql生成不重复的数字

    -- ============================================= -- Author:TUZI -- Create date: 2016.4.18 -- Descrip ...

  5. js操作元素透明度以及浏览器兼容性

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  6. 转载--Beautifuisoup的使用

    转载自--http://mp.weixin.qq.com/s?src=11&timestamp=1520511185&ver=742&signature=KDzYoOg8Xd9 ...

  7. Jsp页面,结果集分页和sql(top)分页的性能对比

    jsp页面两种分页模式: 第一种: 结果集分页,主要代码见下面: ResultSet rs=stmt.executeQuery(sql); ResultSetMetaData md=rs.getMet ...

  8. oracle数据库定时备份

    现有需求,设计一批处理文件,实现周一全部备份,周二周三周五周六增量备份,周四周日累计备份.并且每日将上个月本日数据删除(如今日8月7号,则删除7月7号的数据).并将备份压缩以减小所占空间. 思路: 备 ...

  9. 【sqli-labs】 对于less34 less36的宽字节注入的一点深入

    1.AddSlashes() 首先来观察一下是如何通过构造吃掉转义字符的 先将less 34的网页编码换成gbk 加上一些输出 echo "Before addslashes(): &quo ...

  10. jstree中json data 的生成

       jstree中json data 的生成 jstree官网上给出的json数据格式是这样的: <span style="font-size:14px;">// A ...