题目:洛谷P1351、Vijos P1906、codevs3728、UOJ#16。

题目大意:有一个无向连通图,有n个点n-1条边,每个点有一个权值$W_i$,每条边长度为1。规定两个距离为2的点i和j可以产生$W_i×W_j$的联合权值。求最大的联合权值是多少,联合权值之和是多少。

解题思路:首先,距离为2的点只有两种情况:①点u和它父亲的父亲;②点u和它的兄弟。那么我们只需遍历全图,记录该点父亲的父亲即可。对于每个节点,求出它所有儿子和儿子之间的联合权值是多少,加起来即可。

这样子可能会超时。那么我们可以用一个变量记录前面儿子的权值和,然后直接乘这个和即可。最后答案乘2。

对于第一问,我们也思考以上两种情况。第①种很好考虑,第②种我们只需记录最大权值和次大权值,然后相乘就是可能的最大值了。

于是就过了。

C++ Code:

#include<cstdio>
#include<vector>
using namespace std;
vector<int>G[200002];
int n,d[200002],ans=0,Max=0;
bool b[200002]={0};
void addedge(int from,int to){
G[from].push_back(to);
G[to].push_back(from);
}
void dfs(int u,int fa,int fasfa){
b[u]=true;
if(fasfa)ans=(ans+d[u]*d[fasfa]%10007)%10007;
int sum=0,no1=0,no2=0;
for(int i=0;i<G[u].size();++i)
if(!b[G[u][i]]){
if(d[G[u][i]]>no1)no2=no1,no1=d[G[u][i]];else
if(d[G[u][i]]>no2)no2=d[G[u][i]];
ans=(ans+d[G[u][i]]*sum%10007)%10007;
sum=(sum+d[G[u][i]])%10007;
}
if(no1*no2>Max)Max=no1*no2;
if(d[u]*d[fasfa]>Max)Max=d[u]*d[fasfa];
for(int i=0;i<G[u].size();++i)
if(!b[G[u][i]]){
b[G[u][i]]=true;
dfs(G[u][i],u,fa);
}
}
int main(){
scanf("%d",&n);
for(int i=1;i<n;++i){
int x,y;
scanf("%d%d",&x,&y);
addedge(x,y);
}
for(int i=1;i<=n;++i)scanf("%d",&d[i]);
dfs(1,0,0);
printf("%d %d\n",Max,ans*2%10007);
return 0;
}

最新文章

  1. qt5.5 qtcreator中文乱码
  2. Mac系统下Android生成keystore
  3. MySQL的Incorrect string value错误
  4. select()
  5. PCL Show Point Cloud 显示点云
  6. COM调用 &ndash; VB、PB
  7. java环境变量配置(转)
  8. POJ 3468 区间更新,区间求和(经典)
  9. 缓存应用--Memcached分布式缓存简介
  10. javascript 最常用的技巧整理
  11. Linux环境Weblogic10g服务部署
  12. BZOJ1640: [Usaco2007 Nov]Best Cow Line 队列变换
  13. DVP
  14. [C#]设置或取消开机启动(注册表形式)
  15. 迷你MVVM框架 avalonjs 0.85发布
  16. 2.编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt
  17. Android Studio不更新到最新版使用Kotlin
  18. Python 接口测试(四)
  19. NYOJ 1249 物资调度(DFS+剪枝)
  20. bzoj 2759一个动态树好题

热门文章

  1. POJ 3178 凸包+DP (巨坑)
  2. 基于Zepto移动端下拉加载(刷新),上拉加载插件开发
  3. 忽略PyCharm4中特定的警告提示信息
  4. 【原创】Apache集群报Service Temporarily Unavailable的解决
  5. SpringCloud学习笔记(1)----认识微服务与SpringCloud
  6. CF939F Cutlet (单调队列优化DP)
  7. 抓取豆瓣的电影排行榜TOP100
  8. 重载和const形参
  9. salt 安装kubernetes集群3节点
  10. 紫书 习题8-4 UVa 11491 (贪心)