比赛的时候TLE,第二天发现合并方向合并错了~

改了一下顺序就切了~

又掉分了,好难过QAQ......

Code:

#include <bits/stdc++.h>
#define N 100005
#define mod 1000000007
#define ll long long
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
struct Node
{
ll gc,tmp;
Node(ll gc=0,ll tmp=0):gc(gc),tmp(tmp){}
};
bool cmp(Node a,Node b)
{
return a.gc < b.gc;
}
vector<Node>G[N];
vector<Node>A;
int n,edges;
ll val[N], ans=0;
int hd[N],to[N<<1],nex[N<<1];
void add(int u,int v)
{
nex[++edges]=hd[u],hd[u]=edges,to[edges]=v;
}
void dfs(int u,int ff)
{
if(ff!=0)
{
A.clear();
for(int j=0;j<G[ff].size();++j) A.push_back(G[ff][j]);
for(int i=0;i<A.size();++i) A[i].gc=__gcd(A[i].gc, val[u]);
}
A.push_back(Node(val[u], 1));
sort(A.begin(), A.end(), cmp);
int i,j;
for(i=0;i<A.size();i=j)
{
for(j=i;j<A.size() && A[j].gc==A[i].gc;)
{
++j;
}
ll pp=0;
for(int k=i;k<j;++k)
{
pp+=A[k].tmp;
}
G[u].push_back(Node(A[i].gc, pp));
}
sort(G[u].begin(), G[u].end(), cmp);
for(i=0;i<G[u].size();++i)
ans=(ans+G[u][i].gc*G[u][i].tmp%mod)%mod;
for(int i=hd[u];i;i=nex[i])
{
int v=to[i];
if(v==ff) continue;
dfs(v, u);
}
}
int main()
{
int i,j;
// setIO("input");
scanf("%d",&n);
for(i=1;i<=n;++i) scanf("%lld",&val[i]);
for(i=1;i<n;++i)
{
int a,b;
scanf("%d%d",&a,&b), add(a,b),add(b,a);
}
dfs(1,0);
printf("%lld\n",ans);
return 0;
}

  

最新文章

  1. java多线程--几个多线程面试题小结
  2. 20145215《Java程序设计》第2周学习总结
  3. java笔记之变量的存储方式
  4. 在wpf窗体上添加用户控件
  5. jquery 延迟加载代码
  6. 【转】Jollen 的 Android 教學,#12: 如何建立選單 Menu
  7. LEK-Introduction-Installation-Usage-new
  8. linux 内核的rt_mutex (realtime互斥体)
  9. php复习整理1--位运算符
  10. 小强的HTML5移动开发之路(12)——从一个多媒体标签说起
  11. MySQL Tips
  12. phython安装
  13. 22.多线程.md
  14. C语言中的 *p[2] 与 (*p)[2] 的截然不同
  15. Linux nc命令用法收集
  16. bzoj 5085: 最大——结论题qwq
  17. c++开源日志log4cplus使用开发文档
  18. web三大组件的加载顺序
  19. 快速排序以及第k小元素的线性选择算法
  20. 【bzoj4602】[Sdoi2016]齿轮 BFS

热门文章

  1. (六)Java秒杀项目之接口优化
  2. cmake 升级
  3. vue的基本语法
  4. k8s之helm入门
  5. 数据库优化SQL
  6. excel 导入
  7. 1、windows安装npm教程 --参考自https://www.cnblogs.com/jianguo221/p/11487532.html
  8. 抽奖JQ
  9. PHP转码函数mb_convert_encoding() 和iconv()
  10. navicat for mysql 下载安装教程