Codevs 联合权值
2015-10-16 16:36
411 查看
点击就送屠龙宝刀
题目描述 Description
输入描述 Input Description
输出描述 Output Description
blob.png
样例输入 Sample Input
样例输出 Sample Output
数据范围及提示 Data Size & Hint
此题目有坑!不用在意说什么(u,v)是最短距离,直接从第一个点dfs,每隔一层递加一遍并取max,同时要注意及时取模以免炸int。。(反正我是int存的)。记忆化什么的就不用说了。。这题太水直接贴代码
题目描述 Description
输入描述 Input Description
输出描述 Output Description
blob.png
样例输入 Sample Input
样例输出 Sample Output
数据范围及提示 Data Size & Hint
此题目有坑!不用在意说什么(u,v)是最短距离,直接从第一个点dfs,每隔一层递加一遍并取max,同时要注意及时取模以免炸int。。(反正我是int存的)。记忆化什么的就不用说了。。这题太水直接贴代码
#include <iostream> #include <cstdio> #include <vector> #include <algorithm> using namespace std; long long n,p,k,w[200010]; bool vis[200010]; vector <int> edge[200010]; void dfs(int x,int last1,int last2) { vis[x]=1; long long t=0,t2=0,t3=0,t4=0; for (int i=0;i<edge[x].size();i++) { int y=edge[x][i]; if (!vis[y]) { vis[y]=1; if (last1!=0) { k=(k+w[y]*w[last1])%10007; p=max(p,w[y]*w[last1]); } t2+=t*w[y]; t+=w[y]; if (w[y]>=t3) { t4=t3; t3=w[y]; } if (w[y]<t3) t4=max(t4,w[y]); dfs(y,x,last1); } } p=max(t3*t4,p); k=(k+t2)%10007; } int main() { cin>>n; for (int i=1;i<n;i++) { int u,v; cin>>u>>v; edge[u].push_back(v); edge[v].push_back(u); } for (int i=1;i<=n;i++) cin>>w[i]; dfs(1,0,0); cout<<p<<' '<<k*2%10007<<endl; return 0; }
相关文章推荐
- AngularJS学习笔记之directive——scope选项与绑定策略
- Android 解决屏幕适配(尺寸)
- Spring MVC 教程,快速入门,深入分析――核心类与接口
- transitionFromViewController:toViewController 方法的使用
- 2015年10月16日
- MapReduce原理与设计思想
- inner outer
- linux 下Time_wait过多问题解决
- android-Ultra-Pull-To-Refresh 源码解析
- Spring MVC 教程,快速入门,深入分析――前言
- MongoDB的文档、集合和数据库
- 杭电1028
- Fast RCNN 训练自己数据集 (1编译配置)
- Apache POI组件操作Excel,制作报表(一)
- AFNetworking向服务端上传空文件
- 【LeetCode】 Happy Number 解题报告
- C#类和接口、虚方法和抽象方法及值类型和引用类型的区别
- mysql数据库迁移
- DBCC SQLPERF 用法
- 程序员的诞生