哎我博 4 了。

题目描述

无向连通图 GGG 有 nnn 个点,n−1n−1n−1 条边。点从 111 到 nnn 依次编号,编号为 iii 的点的权值为 WiW_iWi​,每条边的长度均为 111。图上两点 (u,v)(u,v)(u,v) 的距离定义为 uuu 点到 vvv 点的最短距离。对于图 GGG 上的点对 (u,v)(u, v)(u,v),若它们的距离为 222,则它们之间会产生 Wv×WuW_v \times W_uWv​×Wu​ 的联合权值。

请问图 GGG 上所有可产生联合权值的有序点对中,联合权值最大的是多少?所有联合权值之和是多少?

Solution

枚举每个点,发现我所有的儿子,两两距离都为 222。这样我们就设计出了线性算法。

#include<cstdio>
#include<cstdlib>
#include<cstring> const int MAXN=200010; struct node{
int x,y,next;
}e[MAXN+MAXN+10];
int len=0;
int first[MAXN];
int n,sx,sy;
int a[MAXN]; void ins(int x,int y){
e[++len].x=x;e[len].y=y;
e[len].next=first[x];first[x]=len;
}
int max(int x,int y){
return x>y?x:y;
}
inline int read(){
int x=0; char c;
do c=getchar(); while(c<'0'||c>'9');
while(c>='0'&&c<='9')
x=x*10+c-48,c=getchar();
return x;
}
int main(){
n=read();
for(int i=1;i<n;++i){
sx=read();sy=read();
ins(sx,sy);ins(sy,sx);
}
for(int i=1;i<=n;++i)
a[i]=read();
int sum=-1,ans=0;
for(int i=1;i<=n;++i){
int cnt=0,cm=0;
for(int j=first[i];j;j=e[j].next){
int y=e[j].y;
ans=(ans+cnt*a[y])%10007;
//坑点,取模
cnt=(cnt+a[y])%10007;
sum=max(sum,cm*a[y]);
cm=max(cm,a[y]);
}
}
printf("%d %d",sum,(ans+ans)%10007);
}

最新文章

  1. C# 字符编码类Encoding
  2. 旧项目如何切换到Entity Framework Code First
  3. javac 编译与 JIT 编译
  4. [转]Setup-Subversion-1.6.5+TortoiseSVN-v1.6.5
  5. 用node开发repl应用
  6. (二)我的Makefile学习冲动&amp;&amp;编译过程概述
  7. 配置Linux任务计划
  8. Extjs ajax form 提交
  9. Java使用泛型类来提高方法的可重用性
  10. Jquery插件-Html5图片上传并裁剪
  11. 数据结构&mdash;&mdash;左高树
  12. 蓝牙协议 基于TI cc2540 模块的理解(转)
  13. 主成分分析、实例及R语言原理实现
  14. EasyPR源码剖析(5):车牌定位之偏斜扭转
  15. c++ 格式字符串说明
  16. 桥接模式-pattern系列
  17. JSP—作用域
  18. [JavaScript] - form表单转json的插件
  19. SQL思维导图
  20. CF 700 E. Cool Slogans

热门文章

  1. jquery ajax到servlet出现中文乱码(utf-8编码下)
  2. rpm简单使用
  3. 【学习笔记】python3核心技术与实践--开篇词
  4. Elastic-Job:动态添加任务,支持动态分片
  5. 过渡 - transition
  6. [LeetCode] 由 “打印机任务队列&quot; 所想
  7. SpringBoot整合Nacos注册中心
  8. Mybatis源码解析,一步一步从浅入深(六):映射代理类的获取
  9. JS中如何防止表单重复提交问题
  10. (java实现)顺序表-ArrayList