• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 87  文章 - 279  trackbacks - 0
            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            潛心看書研究!

            常用鏈接

            留言簿(19)

            隨筆分類(81)

            文章分類(89)

            相冊

            ACM OJ

            My friends

            搜索

            •  

            積分與排名

            • 積分 - 217836
            • 排名 - 117

            最新評論

            閱讀排行榜

            評論排行榜

            1018. A Binary Apple Tree
            Time Limit: 1.0 second
            Memory Limit: 16 MB

            Let's imagine how apple tree looks in binary computer world. You're right, it looks just like a binary tree, i.e. any biparous branch splits up to exactly two new branches. We will enumerate by natural numbers the root of binary apple tree, points of branching and the ends of twigs. This way we may distinguish different branches by their ending points. We will assume that root of tree always is numbered by 1 and all numbers used for enumerating are numbered in range from 1 to N, where N is the total number of all enumerated points. For instance in the picture below N is equal to 5. Here is an example of an enumerated tree with four branches:

               2   5
            \ /
            3   4
            \ /
            1
            
            As you may know it's not convenient to pick an apples from a tree when there are too much of branches. That's why some of them should be removed from a tree. But you are interested in removing branches in the way of minimal loss of apples. So your are given amounts of apples on a branches and amount of branches that should be preserved. Your task is to determine how many apples can remain on a tree after removing of excessive branches.

             

            Input

            First line of input contains two numbers: N and Q (1 ≤ QN, 1 < N ≤ 100). N denotes the number of enumerated points in a tree. Q denotes amount of branches that should be preserved. Next N-1 lines contains descriptions of branches. Each description consists of a three integer numbers divided by spaces. The first two of them define branch by it's ending points. The third number defines the number of apples on this branch. You may assume that no branch contains more than 30000 apples.

            Output

            Output file should contain the only number — amount of apples that can be preserved. And don't forget to preserve tree's root ;-)

            Sample

            input
            output
            5 2
                        1 3 1
                        1 4 10
                        2 3 20
                        3 5 20
                        
            21
                        

            Problem Source: Ural State University Internal Contest '99 #2
            #include <iostream>
            using namespace std;

            const int MAXN = 110;
            const int MAXQ = 110;

            int n, q;
            int d[MAXN][MAXQ];
            int g[MAXN][MAXN], deg[MAXN], nw[MAXN], son[MAXN][2];
            int root;
            int f[MAXN], isleaf[MAXN];

            inline 
            int maxt(int a, int b) {
                
            return a > b ? a : b;
            }


            void DFS(int v) {
                
            int i, t = 0;
                
            for (i=1; i<=n; i++{
                    
            if (g[v][i] != -1 && !f[i]) {
                        son[v][t
            ++= i;
                        f[i] 
            = 1;
                        nw[i] 
            = g[v][i];
                        DFS(i);
                    }

                }

                
            if (!t) isleaf[v] = 1;
            }


            void buildT() {
                
            int i;
                
            for (i=1; i<=n; i++{
                    
            if (deg[i] == 2{
                        root 
            = i;
                        
            break;
                    }

                }

                f[root] 
            = 1; nw[root] = 0;
                DFS(root);
            }


            int DP(int ti, int tl) {
                
            if (tl <= 0return 0;
                
            if (d[ti][tl] != -1return d[ti][tl];
                
            if (isleaf[ti]) return nw[ti];
                
            int k, tmp = 0;
                
            for (k=0; k<tl; k++{
                    tmp 
            = maxt(tmp, DP(son[ti][0], k)+DP(son[ti][1], tl-1-k));
                }

                d[ti][tl] 
            = tmp + nw[ti];
                
            return d[ti][tl];
            }


            int main() {
                
            int i, j, k, x, y, w;
                scanf(
            "%d%d"&n, &q);
                memset(g, 
            -1sizeof(g));
                memset(d, 
            -1sizeof(d));
                
            for (i=0; i<n-1; i++{
                    scanf(
            "%d%d%d"&x, &y, &w); 
                    g[x][y] 
            = g[y][x] = w;
                    deg[x]
            ++, deg[y]++;
                }

                buildT();
                printf(
            "%d\n", DP(root, q+1));

                
            return 0;
            }

            posted on 2007-04-20 20:05 閱讀(1568) 評論(2)  編輯 收藏 引用 所屬分類: ACM題目

            FeedBack:
            # re: ural 1018(簡單的樹狀dp) 2007-09-26 21:49 zYc
            Thank you!  回復  更多評論
              
            # re: ural 1018(簡單的樹狀dp) 2008-02-25 21:24 jkdjfkdjfkdjflasdkjfkjeijfkdsjfkd
            弱弱的膜拜一下  回復  更多評論
              
            久久99精品久久久久久水蜜桃| 精品欧美一区二区三区久久久| 综合久久给合久久狠狠狠97色| 一本大道久久东京热无码AV| 久久精品国产亚洲AV影院| a级成人毛片久久| 色婷婷狠狠久久综合五月| 亚洲AV无码久久| 久久久久人妻一区精品| 久久亚洲精品国产精品| 精品国产综合区久久久久久| 久久天天躁狠狠躁夜夜96流白浆| 国内精品久久久久久麻豆| 亚洲色婷婷综合久久| 精品国产乱码久久久久久浪潮| 狼狼综合久久久久综合网| 久久综合给合综合久久| jizzjizz国产精品久久| 久久99这里只有精品国产| 大香网伊人久久综合网2020| 久久人人爽爽爽人久久久| 三级三级久久三级久久| 久久精品二区| 成人a毛片久久免费播放| 99国产欧美久久久精品蜜芽| 青青草原综合久久大伊人| 蜜臀久久99精品久久久久久| 亚洲国产天堂久久综合网站| 国产V综合V亚洲欧美久久| 久久AV无码精品人妻糸列| 尹人香蕉久久99天天拍| 日本久久中文字幕| 久久久精品国产Sm最大网站| segui久久国产精品| 国产日韩久久久精品影院首页| 久久久久久久综合日本亚洲| 国产精品久久成人影院| 粉嫩小泬无遮挡久久久久久| 成人免费网站久久久| 久久se精品一区二区| 久久精品国产亚洲综合色|