显然知道一个节点就可以推出整棵树
然而直接乘会爆longlong
所以考虑取log
最后排序算众数即可

# include <stdio.h>
# include <stdlib.h>
# include <iostream>
# include <algorithm>
# include <string.h>
# include <math.h>
# define IL inline
# define RG register
# define Fill(a, b) memset(a, b, sizeof(a))
using namespace std;
typedef long long ll; IL ll Read(){
RG char c = getchar(); RG ll x = 0, z = 1;
for(; c < '0' || c > '9'; c = getchar()) z = c == '-' ? -1 : 1;
for(; c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) + c - '0';
return x * z;
} const int MAXN(500010);
const double EPS(1e-8);
int n, cnt, ft[MAXN], a[MAXN], son[MAXN], ans;
double s[MAXN];
struct Edge{ int to, nt; } edge[MAXN << 1];
/*
s[i]表示i不变,根的a取对数后的值
对s排序,取最多的众数个数num
ans = n - num
*/ IL void Add(RG int u, RG int v){
edge[cnt] = (Edge){v, ft[u]}; ft[u] = cnt++; son[u]++;
} IL void Dfs(RG int u){
for(RG int e = ft[u]; e != -1; e = edge[e].nt){
RG int v = edge[e].to;
s[v] = s[u] + log(son[u]);
Dfs(v);
}
s[u] += log(a[u]);
} int main(RG int argc, RG char* argv[]){
n = Read();
for(RG int i = 1; i <= n; i++) a[i] = Read(), ft[i] = -1;
for(RG int i = 1, u, v; i < n; i++) u = Read(), v = Read(), Add(u, v);
Dfs(1);
sort(s + 1, s + n + 1);
for(RG int i = 2, num = 1; i <= n; i++)
if(s[i] - s[i - 1] < EPS) num++, ans = max(ans, num);
else num = 1;
printf("%d\n", n - ans);
return 0;
}

最新文章

  1. 【干货分享】流程DEMO-事务呈批表
  2. UICollectionView
  3. 3G数据请求
  4. 史航416第十次作业&amp;总结
  5. java-汉字转化拼音(纯java)
  6. C#编程总结 字符转码
  7. FreeSWITCH无法读取wav文件
  8. IOS设计模式-简单工厂
  9. iOS几种简单有效的数组排序方法
  10. Toast的替代者Snackbar
  11. linux根据该文件夹的读取权限和权限运行差异
  12. ajax jsonp跨域
  13. LanSoEditor_common ---android平台的视频编辑SDK
  14. CSS position 属性
  15. 收集一些工作中常用的经典SQL语句
  16. Facebook AI的工业级NLP开源框架—— Pytext
  17. 未来-区块链-IBM:IBM 区块链技术开发社区
  18. SpringBoot之get请求404
  19. 对象关系映射(ORM)框架GreenDao简介和基本使用
  20. linux 通过nvm安装node

热门文章

  1. PLECS_晶闸管调速系统_9w
  2. PHPStorm 常用 设置配置 和快捷键大全 Win/Mac
  3. 关于echarts 报错 初始化对象未定义
  4. bzoj1150 [CTSC2007]数据备份Backup 双向链表+堆
  5. mysql2 - 基础
  6. Yii2重置密码
  7. 3.1 if 条件分支语句
  8. Java文件复制与读写
  9. JavaScript的this和作用域
  10. React Native填坑之旅 -- FlatList