本题属于不定根的树形DP,若以每个节点为根求解一次,复杂度太高,所以可以用换根的技巧。

d[u]表示以u为根向下可以流的最大流量,这个是比较好求的,直接遍历到叶子节点,由子节点信息更新父节点。然后进行第二次遍历,从上往下,子节点的信息由父节点更新。

这就是换根法的基本思路。

本题转移方程还是比较好想的,画图分析一下就行了。

 1 #include<cstdio>
2 #include<cstring>
3 #include<algorithm>
4 using namespace std;
5 const int MAXN=200200;
6 const int MAXE=400400;
7 const int INF=0x3f3f3f3f;
8 struct E{
9 int v,w,next;
10 }edge[MAXE];
11 int head[MAXN],cnt,dp[MAXN],d[MAXN],val[MAXN],deg[MAXN];
12 int n,T;
13
14 void add(int u,int v,int w){
15 edge[cnt].v=v;
16 edge[cnt].w=w;
17 edge[cnt].next=head[u];
18 head[u]=cnt++;
19 }
20
21 void dfs1(int u,int fa){
22 d[u]=0;
23 for(int i=head[u];~i;i=edge[i].next){
24 int v=edge[i].v;
25 if(v==fa) continue;
26 dfs1(v,u);
27 if(deg[v]==1) d[u]+=edge[i].w;
28 else d[u]+=min(d[v],edge[i].w);
29 }
30 }
31
32 void dfs2(int u,int fa){
33 for(int i=head[u];~i;i=edge[i].next){
34 int v=edge[i].v;
35 if(v==fa) continue;
36 if(deg[u]==1) dp[v]=d[v]+edge[i].w;
37 else dp[v]=d[v]+min(dp[u]-min(d[v],edge[i].w),edge[i].w);
38 dfs2(v,u);
39 }
40 }
41
42 void init(){
43 memset(head,-1,sizeof(head));
44 memset(d,0,sizeof(d));
45 memset(dp,0,sizeof(dp));
46 memset(deg,0,sizeof(deg));
47 cnt=0;
48 }
49
50 int main(){
51 scanf("%d",&T);
52 while(T--){
53 scanf("%d",&n);
54 init();
55 for(int i=1;i<n;i++){
56 int u,v,w;
57 scanf("%d%d%d",&u,&v,&w);
58 add(u,v,w);
59 add(v,u,w);
60 deg[u]++;
61 deg[v]++;
62 }
63 dfs1(1,0);
64 dp[1]=d[1];
65 dfs2(1,0);
66 int ans=0;
67 for(int i=1;i<=n;i++)
68 ans=max(ans,dp[i]);
69 printf("%d\n",ans);
70 }
71 return 0;
72 }

最新文章

  1. 从xfire谈WebService接口化编程
  2. JavaScript系列文章:自动类型转换-续
  3. VS2012 Unit Test(Void, Action, Func) —— 对无返回值、使用Action或Func作为参数、多重载的方法进行单元测试
  4. php常用string函数
  5. Sprint第一个冲刺(第九天)
  6. TWaver HTML5 (2D)--基本概念
  7. MVC运行原理
  8. MongoDB系列一(安装)
  9. 【转】eclipse内存设置,tomcat内存设置,查看内存大小
  10. 我对国内两大购书站点的感受(dearbook和china-pub)
  11. Hadoop datanode 磁盘自动化处理
  12. JavaWeb之cookie
  13. mvn mybatis-generator:generate postgresql
  14. vue踩坑--TypeError: __WEBPACK_IMPORTED_MODULE_1_vuex__.a.store is not a constructor
  15. phalcon bug: model的findFirst会自动忽略一些空格
  16. 『TensorFlow』读书笔记_简单卷积神经网络
  17. 剑指Offer 53. 表示数值的字符串 (字符串)
  18. php防止sql注入的方法(转)
  19. MySQL Dual-Master 双向同步
  20. LeetCode刷题(数据库)---- 交换工资

热门文章

  1. OpenWrt之feeds.conf.default详解
  2. LGV 引理
  3. 斜率优化 dp 总结
  4. 从函数计算到 Serverless 架构
  5. windows自动切换深色模式(夜晚模式)
  6. Excel 查找函数(一):LOOKUP
  7. 「题解报告」P2154 虔诚的墓主人
  8. 部署nfs
  9. 关于DOS命令窗口的一点基本知识
  10. Linux之博客系统的搭建