• <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>

            pku2342 Anniversary party 求樹的最大權(quán)獨立集

            題意簡要的說就是給一棵樹,求其最大權(quán)獨立集。
            樹上的問題一般都可以用DP來解決。
            設(shè)dp[pos]是以pos為根的最大權(quán)獨立集,那么dp[pos]=max{val[pos]+dp[son[son[pos]]],dp[son[pos]]}
            附代碼
             1# include <iostream>
             2# include <cstdio>
             3# include <vector>
             4# include <cstring>
             5# define N 10000
             6# define max(a,b) ((a)>(b)?(a):(b))
             7using namespace std;
             8int val[N],dp[N],n;
             9vector<int> g[N];
            10using namespace std;
            11int solve(int pos)
            12{
            13    if(dp[pos]!=-1return dp[pos];
            14    else
            15    {
            16        dp[pos]=0;
            17        int total=val[pos];
            18        for(int i=0;i<g[pos].size();i++)
            19        {
            20          dp[pos]+=solve(g[pos][i]);
            21          for(int j=0;j<g[g[pos][i]].size();j++)
            22            total+=solve(g[g[pos][i]][j]);
            23        }

            24        dp[pos]=max(dp[pos],total);
            25        return dp[pos];
            26        
            27    }

            28}

            29int main()
            30{
            31    scanf("%d",&n);
            32    for(int i=1;i<=n;i++)
            33       scanf("%d",val+i);
            34    while(true)
            35    {
            36       int now,fa;
            37       scanf("%d%d",&now,&fa);
            38       if(!now&&!fa) break;
            39       g[fa].push_back(now);
            40    }

            41    memset(dp,-1,sizeof(dp));
            42    int total=-1;
            43    for(int i=1;i<=n;i++)
            44      if(dp[i]==-1)
            45         total=max(total,solve(i));
            46    printf("%d\n",total);
            47 //   system("pause");
            48    return 0;
            49}

            50

            posted on 2010-11-02 01:48 yzhw 閱讀(325) 評論(0)  編輯 收藏 引用 所屬分類: DPgraph

            <2010年11月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011

            導(dǎo)航

            統(tǒng)計

            公告

            統(tǒng)計系統(tǒng)

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            国产精品毛片久久久久久久| 国产亚洲综合久久系列| 久久久久久噜噜精品免费直播| 国产精久久一区二区三区 | 久久高清一级毛片| 久久国产综合精品五月天| 思思久久好好热精品国产| 久久久久亚洲AV无码永不| 日韩精品久久久久久| 欧美精品国产综合久久| 久久这里只精品国产99热| 亚洲欧美成人久久综合中文网| 久久久久99精品成人片直播| 久久九九久精品国产| AV狠狠色丁香婷婷综合久久| 久久久久久久亚洲精品| 国产精品久久一区二区三区| 亚洲另类欧美综合久久图片区| 精品久久久久久久无码| 久久无码中文字幕东京热| 99久久亚洲综合精品成人| 浪潮AV色综合久久天堂| 色偷偷91久久综合噜噜噜噜| 国产激情久久久久影院老熟女免费| 无码国内精品久久人妻蜜桃| 色婷婷综合久久久久中文字幕| 亚洲精品高清久久| 国产麻豆精品久久一二三| 中文字幕热久久久久久久| 久久久久综合中文字幕| 精品多毛少妇人妻AV免费久久| 97久久超碰国产精品2021| 亚洲乱码中文字幕久久孕妇黑人 | 99久久做夜夜爱天天做精品| 国产精品无码久久久久| 久久91精品国产91久久户| 久久久无码精品亚洲日韩蜜臀浪潮| 久久99国产精品久久99小说| 色老头网站久久网| 精品久久久久久久久免费影院| 综合久久一区二区三区|