青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

強烈推薦此題。此題應用樹型DP解答。
首先明確一點,題中的環至少需要3個頂點。因此,對于樹中的每個頂點,有3種狀態。
f[x][0]表示以x為根的樹,變成每個頂點恰好在一個環中的圖,需要連的最少邊數。
f[x][1]表示以x為根的樹,除了根x以外,其余頂點變成每個頂點恰好在一個環中的圖,需要連的最少邊數。
f[x][2]表示以x為根的樹,除了根x以及和根相連的一條鏈(算上根一共至少2個頂點)以外,其余頂點變成每個頂點恰好在一個環中的圖,需要連的最少邊數。
有四種狀態轉移(假設正在考慮的頂點是R,有k個兒子):
A.根R的所有子樹自己解決(取狀態0),轉移到R的狀態1。即R所有的兒子都變成每個頂點恰好在一個環中的圖,R自己不變。


B.根R的k-1個棵樹自己解決,剩下一棵子樹取狀態1和狀態2的最小值,轉移到R的狀態2。剩下的那棵子樹和根R就構成了長度至少為2的一條鏈。

C.根R的k-2棵子樹自己解決,剩下兩棵子樹取狀態1和狀態2的最小值,在這兩棵子樹之間連一條邊,轉移到R的狀態0。

D.根R的k-1棵子樹自己解決,剩下一棵子樹取狀態2(子樹里還剩下長度至少為2的一條鏈),在這棵子樹和根之間連一條邊,構成一個環,轉移到R的狀態0。


這樣就完成了樹型DP。


/*************************************************************************
Author: WHU_GCC
Created Time: 2007-8-30 10:44:23
File Name: pku1848.cpp
Description: 
***********************************************************************
*/

#include 
<iostream>
#include 
<vector>
using namespace std;
#define out(x) (cout << #x << ": " << x << endl)
const int maxint = 0x7FFFFFFF;
typedef 
long long int64;
const int64 maxint64 = 0x7FFFFFFFFFFFFFFFLL;
template 
<class T> void show(T a, int n) {for (int i = 0; i < n; ++i) cout << a[i] << ' '; cout << endl; }
template 
<class T> void show(T a, int r, int l) {for (int i = 0; i < r; ++i) show(a[i], l); cout << endl; }

const int maxn = 110;
const int inf = 10000;

int n;
vector 
<int> v[maxn];
int f[maxn][3];
int used[maxn];

void dfs(int now)
{
    used[now] 
= 1;
    vector 
<int> child;
    
for (int i = 0; i < v[now].size(); i++if (!used[v[now][i]])
    
{
        dfs(v[now][i]);
        child.push_back(v[now][i]);
    }

    
if (child.size() == 0)
    
{
        f[now][
0= inf;
        f[now][
1= 0;
        f[now][
2= inf;
    }

    
// case 1
    {
        
int sum = 0;
        
for (int i = 0; i < child.size(); i++)
            sum 
+= f[child[i]][0];
        f[now][
1<?= sum;
    }

    
// case 2
    for (int i = 0; i < child.size(); i++)
    
{
        
int p = min(f[child[i]][1], f[child[i]][2]);
        
int sum = 0;
        
for (int j = 0; j < child.size(); j++if (j != i)
            sum 
+= f[child[j]][0];
        f[now][
2<?= sum + p;
        f[now][
0<?= sum + f[child[i]][2+ 1;
    }

    
// case 3
    for (int i = 0; i < child.size(); i++)
        
for (int j = i + 1; j < child.size(); j++)
        
{
            
int p1 = min(f[child[i]][1], f[child[i]][2]);
            
int p2 = min(f[child[j]][1], f[child[j]][2]);
            
int sum = 0;
            
for (int k = 0; k < child.size(); k++if (k != i && k != j)
                sum 
+= f[child[k]][0];
            f[now][
0<?= sum + p1 + p2 + 1;
        }

}


int dp()
{
    
for (int i = 1; i <= n; i++)
        f[i][
0= f[i][1= f[i][2= inf;
    memset(used, 
0sizeof(used));
    dfs(
1);
    
if (f[1][0== inf)
        
return -1;
    
return f[1][0];
}


int main()
{
    
while (scanf("%d"&n) != EOF)
    
{
        
for (int i = 0; i < n - 1; i++)
        
{
            
int t1, t2;
            scanf(
"%d%d"&t1, &t2);
            v[t1].push_back(t2);
            v[t2].push_back(t1);
        }

        printf(
"%d\n", dp());
    }

    
return 0;
}
posted on 2007-08-30 21:47 Felicia 閱讀(1063) 評論(4)  編輯 收藏 引用 所屬分類: 動態規劃
Comments
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久精品理论片| 亚洲黄色一区| 久久精品成人一区二区三区蜜臀 | 亚洲电影在线| 欧美日韩三级| 亚洲国产va精品久久久不卡综合| 国产精品视频yy9299一区| 欧美日韩久久不卡| 久久视频一区| 好吊视频一区二区三区四区| 久久国产精品99国产| 一区二区三区四区国产| 欧美偷拍一区二区| 一区二区三区av| 久久av在线看| 午夜一区二区三区在线观看 | 麻豆av福利av久久av| 香蕉免费一区二区三区在线观看| 国产精品素人视频| 欧美一区二区三区免费视频| 亚洲一区二区三区精品视频 | 国模精品一区二区三区| 蜜臀a∨国产成人精品| 亚洲第一在线综合在线| 亚洲九九精品| 伊人一区二区三区久久精品| 欧美日韩播放| 午夜影院日韩| 亚洲精品五月天| 亚洲尤物影院| 一本色道**综合亚洲精品蜜桃冫 | 欧美日韩1234| 老司机成人网| 亚洲天堂av在线免费观看| 香蕉久久国产| 欧美成人一区二区| 亚洲视频在线看| 久久国产精品亚洲77777| 午夜精品免费在线| 夜夜精品视频| 韩日成人在线| 欧美—级高清免费播放| 日韩视频在线播放| 久久久美女艺术照精彩视频福利播放 | 欧美日韩在线视频一区二区| 亚洲精品一区二区三区樱花| 在线日本高清免费不卡| 男人的天堂亚洲在线| 亚洲大片在线观看| 欧美在线视频导航| 欧美日本在线观看| 久久精品一本久久99精品| 亚洲午夜激情免费视频| 亚洲欧美日韩人成在线播放| 亚洲电影欧美电影有声小说| 母乳一区在线观看| 欧美亚洲综合另类| 欧美高清不卡在线| 久久久免费av| 久久久国际精品| 国产伦精品一区二区三区四区免费 | 久久久天天操| 一区二区三区不卡视频在线观看 | 欧美高清在线播放| 欧美成人蜜桃| 国产精品久久久久影院亚瑟| 久久精品国产69国产精品亚洲| 老巨人导航500精品| 午夜欧美电影在线观看| 欧美日韩一二区| 欧美国产第二页| 海角社区69精品视频| 亚洲最新色图| 一区二区三区 在线观看视频| 久久精品国产欧美激情| 亚洲天堂成人在线观看| 久久在线播放| 久久亚洲图片| 欧美性jizz18性欧美| 久热精品视频在线观看| 黑人巨大精品欧美一区二区| 欧美在线观看网站| 久久久亚洲午夜电影| 国产视频亚洲精品| 久久国产夜色精品鲁鲁99| 久久大逼视频| 国产一区二区三区免费在线观看| 香蕉av777xxx色综合一区| 午夜一级久久| 国产一区视频在线看| 欧美在线91| 免费成人黄色av| 亚洲精品久久久久中文字幕欢迎你 | 国产日韩欧美在线看| 亚洲欧美日韩在线一区| 欧美在线观看一二区| 免费精品99久久国产综合精品| 欧美性色视频在线| 亚洲一区亚洲| 久久久久国产精品麻豆ai换脸| 国内精品久久久久久久影视蜜臀 | 久久久精品一区| 有码中文亚洲精品| 欧美调教vk| 久久亚洲午夜电影| 日韩亚洲精品电影| 久久一二三四| 亚洲一区观看| 国产精品久久久久影院色老大| 欧美影院视频| 日韩亚洲欧美综合| 美女久久网站| 亚洲一品av免费观看| 欧美成人在线影院| 亚洲欧美日韩成人| 亚洲国内自拍| 国产日韩亚洲欧美精品| 欧美午夜精品理论片a级按摩| 久久精品麻豆| 亚洲欧美影院| 亚洲第一网站免费视频| 亚洲欧美另类国产| 亚洲精品国产拍免费91在线| 欧美日韩三级视频| 欧美成年人视频| 久久婷婷亚洲| 欧美在线视频一区二区| 亚洲少妇诱惑| 亚洲最新视频在线| 一区二区三区视频在线观看| 一本一本久久| 亚洲卡通欧美制服中文| 亚洲国产视频一区| 禁断一区二区三区在线| 国产一区二区观看| 国产在线日韩| 韩国精品在线观看| 美女视频网站黄色亚洲| 香蕉乱码成人久久天堂爱免费| 亚洲少妇在线| 亚洲专区欧美专区| 在线综合亚洲欧美在线视频| 欧美第一黄网免费网站| 久久久久久国产精品一区| 久久野战av| 欧美成人精品| 日韩一级免费观看| 亚洲一区中文字幕在线观看| 亚洲欧美经典视频| 91久久综合亚洲鲁鲁五月天| 亚洲免费成人| 久久久激情视频| 国产精品九九久久久久久久| 国产综合色一区二区三区| 最新亚洲一区| 久久国产精品第一页| 亚洲巨乳在线| 欧美极品在线播放| 夜夜嗨av色一区二区不卡| 亚洲日韩欧美视频一区| 久久久夜精品| 激情欧美国产欧美| 久久久久久精| 午夜精品av| 国产毛片精品国产一区二区三区| 老牛嫩草一区二区三区日本 | 欧美ed2k| 欧美一区日韩一区| 国产精品老女人精品视频| 亚洲午夜女主播在线直播| 亚洲乱码视频| 欧美另类在线播放| 99精品国产在热久久下载| 亚洲精品久久久一区二区三区| 猛男gaygay欧美视频| 亚洲伦理一区| 一二美女精品欧洲| 国产亚洲成av人在线观看导航| 久久精品国产综合精品| 欧美成人第一页| 亚洲国产精品久久久久| 欧美激情一二三区| 欧美日韩你懂的| 欧美一区1区三区3区公司| 久久岛国电影| av成人免费在线| 亚洲欧美中文字幕| 激情久久五月天| 亚洲精品欧美精品| 国产精品影音先锋| 老司机免费视频一区二区| 欧美人成在线视频| 欧美在线你懂的| 欧美激情亚洲精品| 欧美在线网站| 欧美久久久久| 模特精品裸拍一区| 国产日韩精品在线播放| 最新成人在线| 国内精品国语自产拍在线观看|