poj 2054 Color a Tree 贪心
来源:互联网 发布:网站源码加密破解 编辑:程序博客网 时间:2024/04/29 06:46
//poj 2054//sep9#include <iostream>using namespace std;const int MAXN=1024;int n,root,e_cnt;int vis[MAXN],num[MAXN],c[MAXN],prev[MAXN];int head[MAXN],adj[MAXN],next[MAXN]; int find_root(){double maxx=0;int tmp_root;for(int i=1;i<=n;++i){if(!vis[i]&&(double)c[i]/num[i]>maxx&&i!=root){maxx=(double)c[i]/num[i];tmp_root=i;}}return tmp_root;}void merge(int k,int p){num[p]+=num[k];c[p]+=c[k];for(int i=head[k];i;i=next[i])prev[adj[i]]=p;}int solve(){int ans=0;for(int i=1;i<n;++i){int k=find_root();vis[k]=1;int p=prev[k];while(vis[p]) p=prev[p];ans+=num[p]*c[k];merge(k,p);}return ans+c[root];//最后只剩一个点了,他的cost就是ans+c[root]。 }int main(){while(scanf("%d%d",&n,&root)==2&&n+root){memset(head,0,sizeof(head));memset(vis,0,sizeof(vis));for(int i=1;i<=n;++i){scanf("%d",&c[i]);num[i]=1;}e_cnt=1;for(int i=1;i<n;++i){int u,v;scanf("%d%d",&u,&v);prev[v]=u;adj[e_cnt]=v,next[e_cnt]=head[u],head[u]=e_cnt++;}printf("%d\n",solve());}return 0;}
0 0
- POJ 2054 Color a Tree 贪心
- 贪心-poj-2054-Color a Tree
- poj 2054 Color a Tree(贪心)
- poj 2054 Color a Tree 据说是贪心
- poj 2054 Color a Tree 贪心
- POJ 2054 Color a Tree 贪心
- POJ 2054(Color a Tree-贪心)
- poj 2054:Color a Tree 贪心
- 2054 Color a Tree 贪心
- POJ 2054---Color a Tree
- POJ 2054 Color a Tree
- 【poj 2054】 Color a Tree
- hdu 1055 & poj 2054 Color a Tree 树&贪心 找最大费用点和父节点合并
- 并查集,贪心:Color A Tree
- Hdu1055 - Color a Tree - 贪心算法
- hdu 1055 Color a Tree 贪心
- hdu 1055 Color a Tree 贪心
- color a tree【hdu1055】【POJ2054】贪心
- 关于vs提示_CRT_SECURE_NO_WARNINGS 警告的问题
- Android 自定义viewGroup学习之FlowLayout的实现
- NOI2007货币兑换CASH 斜率DP
- 3D轮播图
- POJ 3274 Gold Balanced Lineup 数组Hash
- poj 2054 Color a Tree 贪心
- unity 常用/有用attributes
- Windows下搭建Flask环境
- 百练 openjudge 开餐馆(动态规划)
- xUtils3
- java语言概述
- 第一篇博客-自己的小聊天软件-linux下socket基于TCP协议聊天软件
- [leetcode]258. Add Digits
- c语言执行命令 execl