bzoj1060: [ZJOI2007]时态同步
2016-09-16 10:32
295 查看
bzoj1060: [ZJOI2007]时态同步
有生之年可以见到一道裸的树DP真是幸运。
A了以后翻状态忽然发现有个代码长一样的,看了一眼是隔壁ljss神犇……
mxlen[i]记录以i为根子树所需的时间。dfs即可。
有生之年可以见到一道裸的树DP真是幸运。
A了以后翻状态忽然发现有个代码长一样的,看了一眼是隔壁ljss神犇……
题解
发现不会写题解mxlen[i]记录以i为根子树所需的时间。dfs即可。
代码
#include<iostream> #include<cstdio> #define mxn 500005 using namespace std; int n,s,a,b,t; long long mxlen[mxn],ans; int to[mxn<<1],hd[mxn<<1],lk[mxn],len[mxn<<1],cnt; void add(int u,int v,int w) {to[++cnt]=v,len[cnt]=w,hd[cnt]=lk[u],lk[u]=cnt;} void dfs(int x,int last) { for(int i=lk[x];i;i=hd[i]) if(to[i]!=last) dfs(to[i],x),mxlen[x]=max(mxlen[to[i]]+len[i],mxlen[x]); for(int i=lk[x];i;i=hd[i]) if(to[i]!=last) ans+=mxlen[x]-mxlen[to[i]]-len[i]; } int main() { scanf("%d%d",&n,&s); for(int i=1;i<n;i++) scanf("%d%d%d",&a,&b,&t),add(a,b,t),add(b,a,t); dfs(s,0); printf("%lld",ans); }
相关文章推荐
- BZOJ 1060 ZJOI 2007 时态同步 树形DP
- 【BZOJ1060】[ZJOI2007]时态同步 树形DP
- [ZJOI2007]BZOJ1060时态同步-贪心
- BZOJ 1060: [ZJOI2007]时态同步
- bzoj1060[ZJOI2007] 时态同步
- BZOJ 1060: [ZJOI2007]时态同步【树形DP】
- BZOJ 1060: [ZJOI2007]时态同步 树形DP
- [bzoj 1060] [ZJOI2007]时态同步
- bzoj1060 [ZJOI2007]时态同步
- [BZOJ1060][ZJOI2007]时态同步(树形dp)
- bzoj1060 [ZJOI2007]时态同步 [树形dp][贪心…]
- bzoj 1060 [ZJOI2007]时态同步(树形DP)
- bzoj 1060: [ZJOI2007]时态同步 树形dp
- [bzoj1060][zjoi2007]时态同步
- 【BZOJ1060】[ZJOI2007]时态同步
- [bzoj1060][ZJOI2007]时态同步(树上dp)
- 【BZOJ1060】[ZJOI2007]时态同步【TreeDp】
- 【BZOJ1060】【ZJOI2007】时态同步
- [BZOJ1060] [ZJOI2007]时态同步
- [BZOJ 1060][ZJOI2007]时态同步