bzoj1060 [ZJOI2007]时态同步
来源:互联网 发布:软件众包平台 编辑:程序博客网 时间:2024/05/16 12:40
题目
树上做递推
每个节点对答案的贡献为f[x]-f[to[i]]-val[i],val为边权,f[x]为节点到其叶子节点最长的路径长度。
#include<bits/stdc++.h>#define N 500000using namespace std;int n,rt,x,y,z;int first[N+1],nex[2*N+1],to[2*N+1],val[2*N+1],siz;long long f[N+1],ans;int read(){ int x=0; char c=getchar(); while(c<'0'||c>'9')c=getchar(); while(c<='9'&&c>='0')x=x*10+c-'0',c=getchar(); return x;}void add(int x,int y,int z){ nex[siz]=first[x]; first[x]=siz; to[siz]=y; val[siz]=z; siz++;}void DFS(int x,int fa){ f[x]=0; for(int i=first[x];i!=-1;i=nex[i]) { int u=to[i]; if(u==fa)continue; DFS(u,x); f[x]=max(f[x],f[u]+val[i]); } for(int i=first[x];i!=-1;i=nex[i]) if(to[i]!=fa)ans+=f[x]-f[to[i]]-val[i];}int main(){ //freopen("in.txt","r",stdin); memset(first,-1,sizeof(first)); n=read(),rt=read(); for(int i=1;i<n;i++) { x=read(),y=read(),z=read(); add(x,y,z),add(y,x,z); } DFS(rt,0); cout<<ans; return 0;}
阅读全文
0 0
- [BZOJ1060] [ZJOI2007]时态同步
- bzoj1060: [ZJOI2007]时态同步
- bzoj1060[ZJOI2007] 时态同步
- bzoj1060: [ZJOI2007]时态同步
- BZOJ1060[ZJOI2007]时态同步
- BZOJ1060 [ZJOI2007]时态同步
- bzoj1060 [ZJOI2007]时态同步
- bzoj1060 [ZJOI2007]时态同步
- 【BZOJ1060】【ZJOI2007】时态同步
- bzoj1060: [ZJOI2007]时态同步
- 【BZOJ1060】[ZJOI2007]时态同步
- 【BZOJ1060】[ZJOI2007]时态同步【TreeDp】
- [ZJOI2007]BZOJ1060时态同步-贪心
- [BZOJ1060][ZJOI2007]时态同步(树形dp)
- [bzoj1060][ZJOI2007]时态同步(树上dp)
- 【bzoj1060】【ZJOI2007】时态同步(树形dp)
- [bzoj1060][ZJOI2007]时态同步 树形DP
- 【BZOJ1060】时态同步(ZJOI2007)-树形DP
- python魔法方法
- 《统计学习方法》笔记一
- bzoj1029 [JSOI2007]建筑抢修
- Android输入系统源码分析
- Java定义二维数组
- bzoj1060 [ZJOI2007]时态同步
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 A. Banana(连通性水题)
- request,re, BeautifulSoup
- bzoj1150 [CTSC2007]数据备份Backup
- <30>——Substring with Concatenation of All Words
- LCD硬件操作图
- bzoj2005 [Noi2010]能量采集
- bzoj 1135: [POI2009]Lyz 线段树+Hall定理
- bzoj2208 [Jsoi2010]连通数