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

            Sephiroth's boring days!!!

            Love just for you.

            樹歸-珠寶

            【描述】

            給一棵n個結點的樹,給每個點安排一個正整數編號,使得相鄰點具有不同的編號,編號的總和盡量小。
            【輸入】
            第一行:n(n<=50,000)
            以下n-1行,每行兩個數u,v(1<=u,v<=n),表示u 和v有一條邊
            【輸出】
            僅一行,為最小編號和
            【樣例輸入】
            8
            1 2
            1 3
            1 4
            1 5
            5 6
            5 7
            5 8
            【樣例輸出】
            11

            【分析】

            f[i][j]表示i這個點標j這個數所能到達的最小總值。控制j的范圍到30肯定過。

              1: #include <stdio.h>
            
              2: #include <iostream>
            
              3: #define MAXINT 10000000
            
              4: #define maxn 50010
            
              5: using namespace std;
            
              6: 
            
              7: int f[maxn][31];
            
              8: int bl[maxn][maxn/100];
            
              9: int son[maxn][maxn/100],root[maxn];
            
             10: int n;
            
             11: int x,y;
            
             12: int ans=MAXINT;
            
             13: 
            
             14: void maket(int x)
            
             15: {
            
             16:     for (int i=1;i<=bl[x][0];++i)
            
             17:     {
            
             18:         int k=bl[x][i];
            
             19:         if (k==root[x]) continue;
            
             20:         son[x][++son[x][0]]=k;
            
             21:         root[k]=x;
            
             22:         maket(k);
            
             23:     }
            
             24: }
            
             25: 
            
             26: void dp(int x)
            
             27: {
            
             28:     if (f[x][1]) return;
            
             29:     for (int i=1;i<=30;++i)
            
             30:     {
            
             31:         for (int j=1;j<=son[x][0];++j)
            
             32:         {
            
             33:             int tt=son[x][j];
            
             34:             dp(tt);
            
             35:             int minn=MAXINT;
            
             36:             for (int jj=1;jj<=30;++jj)
            
             37:                 if (jj!=i)
            
             38:                     if (f[tt][jj]<minn)
            
             39:                         minn=f[tt][jj];
            
             40:             f[x][i]+=minn;
            
             41:         }
            
             42:         f[x][i]+=i;
            
             43:     }
            
             44: }
            
             45: 
            
             46: int main()
            
             47: {
            
             48:     freopen("gems.in","r",stdin);
            
             49:     freopen("gems.out","w",stdout);
            
             50:     
            
             51:     scanf("%d",&n);
            
             52:     for (int i=1;i<n;++i)
            
             53:     {
            
             54:         scanf("%d%d",&x,&y);
            
             55:         bl[x][++bl[x][0]]=y;
            
             56:         bl[y][++bl[y][0]]=x;
            
             57:     }
            
             58:     maket(1);
            
             59:     dp(1);
            
             60:     for (int i=1;i<=30;++i)
            
             61:         if (f[1][i]<ans)
            
             62:             ans=f[1][i];
            
             63:     printf("%d\n",ans);
            
             64:     return 0;
            
             65: }
            
             66: 

            posted on 2010-09-02 20:40 Sephiroth Lee 閱讀(350) 評論(0)  編輯 收藏 引用 所屬分類: 信息奧賽

            free counters
            久久久久AV综合网成人| 久久丝袜精品中文字幕| 久久久WWW成人免费毛片| 99国产欧美久久久精品蜜芽| 狠狠色丁香久久婷婷综合_中| 久久av高潮av无码av喷吹| 999久久久国产精品| 99久久精品午夜一区二区| 人妻精品久久久久中文字幕69| 亚洲精品蜜桃久久久久久| 久久亚洲中文字幕精品一区| 久久伊人五月天论坛| 伊人久久大香线蕉成人| 久久精品国产欧美日韩99热| 久久久国产亚洲精品| 亚洲中文字幕无码一久久区| 性欧美丰满熟妇XXXX性久久久| 99久久夜色精品国产网站| 99久久免费国产精精品| 国产亚州精品女人久久久久久 | 久久精品中文闷骚内射| 九九精品99久久久香蕉| 99热都是精品久久久久久| 欧美性大战久久久久久| 亚洲愉拍99热成人精品热久久| 精品久久久无码人妻中文字幕豆芽 | 伊人色综合久久天天网| 久久受www免费人成_看片中文| 久久精品人妻一区二区三区| 性做久久久久久免费观看| 狼狼综合久久久久综合网| 99久久综合国产精品二区| 亚洲狠狠婷婷综合久久久久| 人人狠狠综合久久亚洲婷婷| 久久久久久国产a免费观看黄色大片| 久久久久亚洲Av无码专| 久久无码一区二区三区少妇| 漂亮人妻被黑人久久精品| 久久久久香蕉视频| 久久精品国产亚洲综合色| 性做久久久久久免费观看|