是看着别人的博客来写的。。学习他的方法吧。第二题了哦,加油加油。  要看看去贪心算法咯

博客原文   POJ原题

#include <stdio.h>
#include <stdlib.h>
#define MAXN 1010
int n,r;
int c[MAXN];
int parent[MAXN];
bool visited[MAXN];
int next[MAXN];
int prev[MAXN];
int rank[MAXN];
int sum[MAXN];
int find()
{double max=0;int i,flg=-1;for(i=1;i<=n;i++)if(max<sum[i]*1.0/rank[i] && !visited[i]){max=sum[i]*1.0/rank[i];flg=i;}return flg;
}
void uni(int x)
{//合并节点,并把他们按顺序排好int i;for(i=parent[x];prev[i]!=-1;i=prev[i]);  //合并节点rank[i]+=rank[x];sum[i]+=sum[x];for(i=parent[x];next[i]!=-1;i=next[i]);  //排序,接到最后一个节点上next[i]=x;prev[x]=i;visited[x]=true;
}int main()
{while(scanf("%d %d",&n,&r),n && r){int i;for(i=1;i<=n;i++){scanf("%d",&c[i]);visited[i]=false;prev[i]=next[i]=-1;rank[i]=1;  //合并后,集合中的规模sum[i]=c[i];  //集合的和}for(i=1;i<n;i++){   //输入n-1个节点的父子关系int a,b;scanf("%d %d",&a,&b);parent[b]=a;}visited[r]=true;while(true){int u=find();if(u==-1)break;uni(u);}int cnt=0,ans=0;  //cnt用于记录时间for(i=r;i!=-1;i=next[i])ans+=(++cnt)*c[i];printf("%d\n",ans);}return 0;
}

  

转载于:https://www.cnblogs.com/Jason-Damon/archive/2011/11/06/2238003.html

poj2054 Color a Tree相关推荐

  1. POJ 2054 Color a Tree解题报告

    题干 Bob is very interested in the data structure of a tree. A tree is a directed graph in which a spe ...

  2. POJ 2054 Color a Tree (贪心)

    $ POJ~2054~Color~a~Tree $ $ solution: $ 我们先从题中抽取信息,因为每个点的费用和染色的次数有关,所以我们可以很自然的想到先给权值大的节点染色.但是题目还说每个节 ...

  3. POJ 2054 Color a Tree

    贪心....                    Color a Tree Time Limit: 1000MS   Memory Limit: 30000K Total Submissions:  ...

  4. HDU 6241 Color a Tree

    Color a Tree 题目大意:一棵树,根为1.某些点有一些限制.限制A: 该$x_i$点子树染色点至少$y_i$个. 限制B: 该$x_i$点子树外染色至少$y_i$个.求最少染色点数. 首先是 ...

  5. PKU/POJ 2054 Color a Tree

    关于树的着色. 要求从根节点出发, 遍历整棵树, 要求代价最小. 访问每个节点的代价V[i] = F[i] * C[i], C[i]为已知的值, F[i]则为访问该节点的时间. 每一步只能从已访问的节 ...

  6. HDU_1055 POJ_2054 Color a Tree(贪心)

    这道题整了一下午,最后还是看别人的解题报告弄出来的,先说说我的理解吧.大体处理思路是利用贪心思想,每次取权值最大的节点,不断的将权值最大节点与它的父节点合并. 过程: 1.初始时将序列中的time[i ...

  7. UPC1430 Color a Tree(贪心)

    链接:http://exam.upc.edu.cn/problem.php?cid=1430&pid=19 题意: 一棵树,n个节点,n-1条边,每个节点有权值val.Time为当前时间,初始 ...

  8. Color a Tree

    http://icpc.upc.edu.cn/problem.php?cid=1430&pid=19 结论1:对于一个非根结点,它具有非根结点的最大权值,那么访问完它的父亲后就要立即访问它才能 ...

  9. POJ2777 Count Color 线段树区间更新

    题目描写叙述: 长度为L个单位的画板,有T种不同的颜料.现要求按序做O个操作,操作分两种: 1."C A B C",即将A到B之间的区域涂上颜色C 2."P A B&qu ...

  10. CodeForces - 620E New Year Tree(线段树+dfs序+状态压缩)

    题目链接:点击查看 题目大意:给出一棵无向树,每个节点都有一种颜色,接下来时m次操作: 1 x y:将x及其子树染成y的颜色 2 x:查询x及其子树上共有多少种不同的颜色 题目分析:看完这个题的第一反 ...

最新文章

  1. Cocos Creator中的动画支持技术
  2. Expo大作战(十二)--expo中的自定义样式Custom font,以及expo中的路由RouteNavigation
  3. 编写Web前端代码的注意事项
  4. PowerDesigner(九)-模型文档编辑器(生成项目文档)
  5. net core上传文件异常:Multipart body length limit 16384 exceeded.
  6. 前端那些事之日历多选插件篇
  7. QT 中控件内坐标转换为父窗口坐标或屏幕坐标
  8. 易语言 精易模块 网页_访问 获取显示验证码图片
  9. 教你如何批量下载QQ相册或是手机相册里原照片
  10. 利用echart和echart-gl绘制江苏省的地图之二
  11. python小组项目总结报告_项目总结报告多篇汇总
  12. Ubuntu突然无法解析域名解决
  13. pb rows changed between retrieve and update的问题
  14. binlog_do_db 与 binlog_ignore_db
  15. 什么牌子的蓝牙耳机音质好?音质超好的蓝牙耳机测评
  16. vim使用gf(go file)跳转文件
  17. 【绘制】HTML5 Canvas 中渐变色和图案(图文、示例)
  18. int *p = a、p = a、*p = a的正确理解
  19. 2020年中国眼科诊断器械行业发展现状及主要企业数据分析,近视人群年轻化加剧带动眼科诊断设备行业发展「图」
  20. 方钢管弹性模量计算方式_普通方钢承重计算公式

热门文章

  1. 正则表达式(Regex)
  2. 多线程之线程通信条件Condition
  3. 一个故事告诉你什么才是好的程序员
  4. 【AtCoder010】A - Addition(奇偶)
  5. IBatisNet -- 保护你的配置文件及映射文件信息
  6. Windows下一个MySQL有些错误的解决方法
  7. spring MVC三种统一异常处理的方法
  8. 挑netfilter的11个不足之处
  9. 启动SQL Server 时自动执行存储过程
  10. 关于getX()getY()就可以获取到位置,找不到方法问题