BZOJ 1060 时态同步
Posted ziliuziliu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 1060 时态同步相关的知识,希望对你有一定的参考价值。
贪心。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxv 500500 #define maxe 1000500 using namespace std; int n,s,x,y,z,f[maxv],g[maxv],nume=1; long long ans=0; struct edge { int v,w,nxt; }e[maxe]; void addedge(int u,int v,int w) { e[++nume].v=v; e[nume].w=w; e[nume].nxt=g[u]; g[u]=nume; } void dfs(int x,int fath) { for (int i=g[x];i;i=e[i].nxt) { int v=e[i].v; if (v==fath) continue; dfs(v,x);f[x]=max(f[x],f[v]+e[i].w); } for (int i=g[x];i;i=e[i].nxt) { int v=e[i].v; if (v==fath) continue; ans+=f[x]-f[v]-e[i].w; } } int main() { scanf("%d%d",&n,&s); for (int i=1;i<=n-1;i++) { scanf("%d%d%d",&x,&y,&z); addedge(x,y,z);addedge(y,x,z); } dfs(s,0); printf("%lld\n",ans); return 0; }
以上是关于BZOJ 1060 时态同步的主要内容,如果未能解决你的问题,请参考以下文章
BZOJ 1060 1060: [ZJOI2007]时态同步 (树形DP)