我們考慮將一個節點x的所有兒子的數都改成y

記lcm[x]表示一個點的所有子節點的lcm值

那麼我們會發現y*deg[x] 要被lcm[x]整除

那麼x就會比x所有子節點最小的數小,記為z

那麼x就是比z小的數中,可以整除lcm[x]/deg[x]的最大的數

會不會導致x不能整除它對應的lcm?不會

因為lcm[x]/deg[x]就是它所有子節點的lcm,可以整除x的所有子節點

#include<bits/stdc++.h>
using namespace std;
long long lcs[100010],ans,a[100010],vis[100010],n;
long long lcm(long long a,long long b){return a*b/__gcd(a,b);}
vector<int>v[100010];
void dfs(int x){
	vis[x]=1;
	if(a[x]!=0){
		lcs[x]=1;
		return;
	}
	long long sc=0,minn=1e15,sum=0;
	lcs[x]=1;
	for(int i=0;i<(int)v[x].size();i++)
		if(vis[v[x][i]]==0){
			dfs(v[x][i]);
			sum+=a[v[x][i]];
			sc++;
			minn=min(minn,a[v[x][i]]);
			lcs[x]=lcm(lcs[x],lcs[v[x][i]]);
		}
	lcs[x]*=sc;
	long long m=minn-(minn%(lcs[x]/sc));
	ans+=sum-m*sc;
	a[x]=m*sc;
}
int main(){
	freopen("pylon.in","r",stdin);
	freopen("pylon.out","w",stdout);
	scanf("%lld",&n);
	for(int i=1;i<=n;i++)
		scanf("%lld",&a[i]);
	for(int i=1;i<n;i++){
		int x,y;
		scanf("%d %d",&x,&y);
		v[x].push_back(y);
		v[y].push_back(x);
	}
	dfs(1);
	printf("%lld",ans);
}

jzoj3519的更多相关文章

随机推荐

  1. phalcon框架安装

    Phalcon学习笔记 - 安装 原创 2014年10月23日 12:20:33 标签: phalcon / phalcon安装 5014 如何学习一个新的框架 1  明白工作原理 2  知道核心思想 ...

  2. mstsc本地驱动器

    mstsc 可以把本地驱动器 挂载到服务器上

  3. RSA生成、加密、解密、签名。

    首先,要会生成RSA密码对. https://app.alipay.com/market/document.htm?name=saomazhifu#page-23    (事例中的密钥对好像有问题,最 ...

  4. 项目UML设计

    团队信息 队名:火箭少男100 本次作业课上成员 短学号 名 本次作业博客链接 2507 俞辛(临时队长) https://www.cnblogs.com/multhree/p/9821080.htm ...

  5. C语言基础第三次作业

    题目7-1,寻找最小值 1.实验代码: #include<stdio.h> int main() { int i,mark,min,n; scanf("%d", &am ...

  6. 搭建Idea授权服务器用于学习

    我自己的搭建服务器http://doit.wenyule.top 懒得看教程或弄不好的小伙伴可以用我搭建的,在激活那选择服务器,输入我上面的地址,注意可以激活2018.2.1之前的.为了防止用的人太多 ...

  7. Nginx中间件使用心得(三)

    一.Nginx搭建系统需求 1.系统硬件:CPU >= 2Core,内存 >= 256M      2.自行搭建服务器(Linux操作系统) (1) 使用vmWare虚拟服务器 (2)使用 ...

  8. Can not find the tag library descriptor for "/struts-tags"`

    1.查看struts.xml路径是否错误,要放在src下, 2.缺少struts-tags.tld (1)查找方式: (2)找到此包,然后右键用解压缩文件打开. (3)然后你会看到很多的源码,找到红圈 ...

  9. 初识Java ThreadLocal

    转载自:https://www.cnblogs.com/dreamroute/p/5034726.html ThreadLocal翻译成中文比较准确的叫法应该是:线程局部变量. 这个玩意有什么用处,或 ...

  10. python编码(六)

    1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有 ...