zoukankan      html  css  js  c++  java
  • HDU 4003 Find Metal Mineral(分组背包+树形DP)

    题目链接

    很棒的一个树形DP。学的太渣了。

     1 #include <cstdio>
     2 #include <string>
     3 #include <cstring>
     4 #include <iostream>
     5 #include <algorithm>
     6 using namespace std;
     7 int dp[10001][11];
     8 struct node
     9 {
    10     int u,v,w,next;
    11 }edge[30001];
    12 int first[10001],t,flag[10001];
    13 int n,m;
    14 void CL()
    15 {
    16     t = 0;
    17     memset(first,-1,sizeof(first));
    18     memset(flag,0,sizeof(flag));
    19 }
    20 void add(int u,int v,int w)
    21 {
    22     edge[t].u = u;
    23     edge[t].v = v;
    24     edge[t].w = w;
    25     edge[t].next = first[u];
    26     first[u] = t ++;
    27 }
    28 void dfs(int u)
    29 {
    30     int i,v,j,k;
    31     flag[u] = 1;
    32     for(i = first[u];i != -1;i = edge[i].next)
    33     {
    34         v = edge[i].v;
    35         if(flag[v]) continue;
    36         dfs(v);
    37         for(j = m;j >= 0;j --)
    38         {
    39             dp[u][j] += dp[v][0] + 2*edge[i].w;
    40             for(k = 1;k <= j;k ++)
    41             {
    42                 dp[u][j] = min(dp[u][j],dp[u][j-k] + dp[v][k] + k*edge[i].w);
    43             }
    44         }
    45     }
    46 }
    47 int main()
    48 {
    49     int s,u,v,w,i;
    50     while(scanf("%d%d%d",&n,&s,&m)!=EOF)
    51     {
    52         CL();
    53         memset(dp,0,sizeof(dp));
    54         for(i = 1;i < n;i ++)
    55         {
    56             scanf("%d%d%d",&u,&v,&w);
    57             add(u,v,w);
    58             add(v,u,w);
    59         }
    60         dfs(s);
    61         printf("%d
    ",dp[s][m]);
    62     }
    63     return 0;
    64 }
  • 相关阅读:
    基于MongoDB.Driver的扩展
    通用查询设计思想
    API接口通讯参数规范
    lambda简单记录
    list去重精简代码版
    spring boot file上传
    fastjson过滤器简单记录
    java读取properties文件
    list循环删除单个元素
    MapReduce运行流程分析
  • 原文地址:https://www.cnblogs.com/naix-x/p/3412282.html
Copyright © 2011-2022 走看看