bzoj 1060: [ZJOI2007]时态同步 树形dp
来源:互联网 发布:玛祖铭立 知乎 编辑:程序博客网 时间:2024/05/21 00:16
题意
给出一棵有根树,边有边权。每次操作可以使得某条边的长度+1,问多少次操作后所有叶节点的深度相等。
n<=500000
分析
直接树形dp即可。
代码
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;const int N=500005;int n,root,cnt,last[N];LL dep[N],mx[N],ans;struct edge{int to,w,next;}e[N*2];void addedge(int u,int v,int w){ e[++cnt].to=v;e[cnt].w=w;e[cnt].next=last[u];last[u]=cnt; e[++cnt].to=u;e[cnt].w=w;e[cnt].next=last[v];last[v]=cnt;}void dfs(int x,int fa){ mx[x]=dep[x]; for (int i=last[x];i;i=e[i].next) { if (e[i].to==fa) continue; dep[e[i].to]=dep[x]+e[i].w; dfs(e[i].to,x); mx[x]=max(mx[x],mx[e[i].to]); } for (int i=last[x];i;i=e[i].next) { if (e[i].to==fa) continue; ans+=mx[x]-mx[e[i].to]; }}int main(){ scanf("%d%d",&n,&root); for (int i=1;i<n;i++) { int x,y,z; scanf("%d%d%d",&x,&y,&z); addedge(x,y,z); } dfs(root,0); printf("%lld",ans); return 0;}
阅读全文
0 0
- BZOJ 1060 ZJOI2007 时态同步 树形DP
- BZOJ 1060: [ZJOI2007]时态同步 树形DP
- bzoj 1060: [ZJOI2007]时态同步 树形dp
- bzoj 1060: [ZJOI2007]时态同步(树形DP)
- 【BZOJ】1060: [ZJOI2007]时态同步
- BZOJ 1060: [ZJOI2007]时态同步
- [BZOJ1060][ZJOI2007]时态同步(树形dp)
- 【bzoj1060】【ZJOI2007】时态同步(树形dp)
- [bzoj1060][ZJOI2007]时态同步 树形DP
- [ZJOI2007]时态同步(树形DP+DFS)
- 【BZOJ1060】时态同步(ZJOI2007)-树形DP
- bzoj 1060 [ZJOI2007] 时态同步 题解
- BZOJ 1060 ZJOI 2007 时态同步 树形DP
- bzoj1060 [ZJOI2007]时态同步 [树形dp][贪心…]
- LuoguP1131[ZJOI2007] 时态同步 解题报告【树形DP(?)】
- 1060: [ZJOI2007]时态同步
- [bzoj1060][ZJOI2007]时态同步(树上dp)
- BZOJ 1060 时态同步
- Docker+Gogs搭建个人Git服务
- python爬虫练习4:刷博客浏览量
- 黑盒测试、白盒测试、灰盒测试之间区别
- Redis PFADD
- 管道
- bzoj 1060: [ZJOI2007]时态同步 树形dp
- pat 乙级 1019. 数字黑洞 (20)
- oracle数据库建立后,用户名跟密码设置windows平台
- Windows显示驱动中读取EDID
- form表单中传过来的参数对应的值有可能是""空串
- spring属性注入必须有默认构造方法
- iOS 3D Touch超详细入门(附带demo示例代码)
- csu1115 最短的名字 字典树模板
- 2017.9.2总结3-分割田地