【题目链接】

点击打开链接

【算法】

如果(u,v)的距离为2,那么有两种可能 :

1.u和v为祖孙关系

2.u和v为兄弟关系

树形DP即可,详见代码

【代码】

#include<bits/stdc++.h>
using namespace std;
#define MAXN 200000
#define MOD 10007 int i,u,v,N,ans1,ans2;
int w[MAXN+],max1[MAXN+],max2[MAXN+],fa[MAXN+],sum[MAXN+];
vector<int> E[MAXN+]; template <typename T> inline void read(T &x) {
int f=; x=;
char c = getchar();
for (; !isdigit(c); c = getchar()) { if (c == '-') f = -f; }
for (; isdigit(c); c = getchar()) x = x * + c - '';
x *= f;
} template <typename T> inline void write(T x) {
if (x < ) { putchar('-'); x = -x; }
if (x > ) write(x/);
putchar(x%+'');
} template <typename T> inline void writeln(T x) {
write(x);
puts("");
} inline void dfs(int root) {
int i,son,cnt=;
for (i = ; i < E[root].size(); i++) {
son = E[root][i];
if (son != fa[root]) {
fa[son] = root;
dfs(son);
cnt = (cnt + w[son] * w[son]) % MOD;
ans1 = max(ans1,w[root]*max1[son]);
ans2 = (ans2 + (w[root] * sum[son] * ) % MOD) % MOD;
sum[root] = (sum[root] + w[son]) % MOD;
if (w[son] > max1[root]) {
max2[root] = max1[root];
max1[root] = w[son];
} else if (w[son] > max2[root])
max2[root] = w[son];
}
}
ans1 = max(ans1,max1[root]*max2[root]);
ans2 = (ans2 + (sum[root] * sum[root] % MOD - cnt + MOD) % MOD) % MOD;
} int main() { read(N);
for (i = ; i < N; i++) {
read(u); read(v);
E[u].push_back(v);
E[v].push_back(u);
}
for (i = ; i <= N; i++) read(w[i]);
dfs(); write(ans1); putchar(' '); write(ans2); puts(""); return ; }

最新文章

  1. Python黑帽编程2.8 套接字编程
  2. width的数值为百分比
  3. moffiestyle
  4. React Native 常见问题集合
  5. candence 知识积累1
  6. jsp-avaBean
  7. java中Finally块的执行
  8. GPUImage学习
  9. ASP.NET MVC学习1
  10. hdu 2881 Jack&#39;s struggle(DP)
  11. MySQL数据库MyISAM和InnoDB存储引擎的比较(转)
  12. Elasticsearch-深入理解索引原理
  13. ubuntu中连接mssql数据库sqlserver
  14. jsp页面简单的验证码实现
  15. Zookeeper 源码学习(一)环境搭建
  16. java中的排序(自定义数据排序)--使用Collections的sort方法
  17. windows下python管理右键菜单
  18. vc listview 大图标间距设置
  19. [BZOJ4566][HAOI2016]找相同子串
  20. 无需写try/catch,也能正常处理异常

热门文章

  1. 数字IC设计入门必备——VIM自定义模板调用与VCS基本仿真操作示例
  2. python type()函数
  3. sqlite 常用操作
  4. kafka的安装和使用;kafka常用操作命令
  5. iOS开发之创建颜色渐变视图View
  6. 安卓开发懒鬼最爱之ButterKnife,依赖注入第三方是库,进一步加速开发速度
  7. Flex事件机制学习-自定义事件实现类间通信 .
  8. Nova虚拟机启动提示libvirtError
  9. MYSQL强制使用索引和禁止使用索引
  10. [网页游戏开发]进一步了解Morn UI及工作流