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

算法學社
記錄難忘的征途
posts - 141,comments - 220,trackbacks - 0

題目描述:

   一顆有N個節點(N<2,500)的帶權樹。現在割去一條邊,加到其他節點上,并保證也是一棵樹。問最小的直徑是多少?

算法分析:

    枚舉每條邊。樹形DP求出割掉這條邊后,每個節點可以到的最遠距離。
    樹形DP是萬能的!!!!
#include<iostream>
#include<cstdio>
using namespace std;
// build graph
const int V = 2500 + 5;
const int E = V*2;
int head[V], nxt[E], pnt[E], cost[E], e, n;
void add(int u,int v,int c){
    pnt[e] = v; cost[e] = c;
    nxt[e] = head[u]; head[u] = e; e++;
}
// tree dp
const int inf = ~0u>>2;
int mx[V], sd[V];
void dfs(int u,int f){
    mx[u]= 0; 
    sd[u] = 0;
    for(int i = head[u]; i!=-1; i=nxt[i]) {
        int v = pnt[i];
        if(v == f) continue;
        dfs(v,u);
        if(cost[i] + mx[v] > mx[u]) {
            sd[u] = mx[u];
            mx[u] = cost[i] + mx[v];
        }
        else if(cost[i] + mx[v] > sd[u])
            sd[u] = cost[i] + mx[v];
    }
}
int temp, flag;
void dfs1(int u,int f) {
//    cout<<"u: "<<u<<" "<<mx[u]<<" "<<sd[u]<<endl;
    if(mx[u] < temp) temp = mx[u];
    if(mx[u] > flag) flag = mx[u];
    for(int i = head[u]; i!=-1; i=nxt[i]) {
        int v = pnt[i];
        if(v == f) continue;
//        cout<<"v: "<<v<<" "<<mx[v]<<endl;
        if(mx[v] + cost[i] < mx[u])
            mx[v] = mx[u] + cost[i];
        else if(cost[i] + sd[u] > mx[v]){
            mx[v] = cost[i] + sd[u];
        }
        else if(cost[i] + sd[u] > sd[v]){
            sd[v] = cost[i] + sd[u];
        }
        dfs1(v,u);
    }
}
// main
int main(){
    int test;
    scanf("%d", &test);
    for(int _ = 1; _ <= test; _ ++){
        scanf("%d",&n);
        int u,v,c;
        //init
        for(int i=0;i<n;i++) head[i] = -1;
        e = 0;
        // input
        for(int i=1;i<n;i++) {
            scanf("%d%d%d",&u,&v,&c);
            add(u,v,c);
            add(v,u,c);
        }
        int ans = inf;
        for(int i=0;i<e;i+=2){
            int u = pnt[i], v = pnt[i^1], mn = cost[i], mx1, mx2;
            temp = inf;
            flag = 0;
            dfs(u,v); dfs1(u,v);
            mn += temp;
            mx1 = flag;
//            cout<<temp<<endl;
            temp = inf;
            flag = 0;
            dfs(v,u); dfs1(v,u);
            mn += temp;
            mx2 = flag;
            mn = max(max(mx1,mx2),mn);
//            cout<<temp<<endl;
            if(mn < ans) ans = mn; 
        }
        printf("Case %d: %d\n",_,ans);
    }
}
posted on 2012-07-29 14:57 西月弦 閱讀(253) 評論(3)  編輯 收藏 引用

FeedBack:
# re: hdu 3721 樹形DP
2012-07-31 09:56 | wuyiqi
你是怎么描述切掉一條邊,補到另外兩個點上的,沒看懂
  回復  更多評論
  
# re: hdu 3721 樹形DP
2012-07-31 20:05 | 西月弦
@wuyiqi
比如我要割掉邊(u,v),那么我就對以u為根的子樹和以v為根的子樹分別搜索并樹形dp,且保證不通過(u,v)。
那么新的樹的直徑要么是子樹u的直徑,要么是子樹v的直徑。要么是u的最小dp值 + v的最小dp值加(u,v)邊權。

ps: 你們多校怎么那么猛。。。 Orz....  回復  更多評論
  
# re: hdu 3721 樹形DP
2012-08-01 23:05 | wu
@西月弦
懂了。
我們一隊比較強吧,這兩次好像都在前10,我的隊不是很穩定
  回復  更多評論
  

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲高清中文字幕| 久久久久久香蕉网| 久久网站免费| 久久久久久999| 久久香蕉精品| 亚洲高清av在线| 老色批av在线精品| 欧美激情精品久久久久久蜜臀| 蜜桃久久av一区| 久久夜色精品| 久久久噜噜噜| 久久一区激情| 美女主播视频一区| 欧美激情亚洲国产| 男男成人高潮片免费网站| 久久午夜色播影院免费高清| 欧美国产日韩精品| 日韩午夜三级在线| 亚洲综合色网站| 另类尿喷潮videofree| 欧美激情精品久久久六区热门 | 久久精品日产第一区二区| 久久久www成人免费精品| 欧美国产专区| 极品少妇一区二区三区| 亚洲欧美日韩国产成人精品影院| 久久一日本道色综合久久| 99国产精品视频免费观看一公开 | 久久免费午夜影院| 亚洲激情黄色| 久久婷婷人人澡人人喊人人爽| 国产精品乱码一区二三区小蝌蚪| 亚洲精品免费一区二区三区| 久久久久久久久久久一区| 中文欧美日韩| 国产伦精品一区二区三区高清版| 亚洲视频自拍偷拍| 亚洲激情成人在线| 免费观看日韩av| 欧美永久精品| 激情综合五月天| 欧美激情第三页| 欧美乱大交xxxxx| 亚洲一区在线免费观看| 中文亚洲字幕| 国产精品白丝av嫩草影院| 羞羞色国产精品| 久久久免费观看视频| 最新热久久免费视频| 一本久道久久综合狠狠爱| 国产精品成人一区| 久久综合图片| 国产精品videosex极品| 久久久久一区二区三区四区| 欧美风情在线观看| 久久精品国产999大香线蕉| 欧美成人一区二区在线| 亚洲一区3d动漫同人无遮挡| 久久精品视频播放| 亚洲每日更新| 亚洲国产精品久久久久久女王| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 亚洲视频欧美视频| 亚洲第一精品久久忘忧草社区| 亚洲精品黄网在线观看| 狠狠综合久久| 在线视频中文亚洲| 欧美成人在线网站| 黄色精品免费| 一区二区三区 在线观看视| 狠狠色丁香久久综合频道 | 亚洲欧洲视频在线| 久久久999| 老司机午夜精品视频| 国产小视频国产精品| 欧美一区二区在线视频| 欧美在线91| 韩国欧美一区| 久久综合九色综合久99| 亚洲电影中文字幕| 亚洲精品中文字幕女同| 免费成人美女女| 亚洲免费观看| 亚洲综合电影一区二区三区| 国产精品一区三区| 久久久91精品国产| 亚洲国产精品v| 一区二区三区四区五区在线| 国产精品久久久999| 久久九九免费视频| 99精品国产在热久久婷婷| 午夜在线a亚洲v天堂网2018| 91久久精品日日躁夜夜躁国产| 欧美精品激情在线观看| 亚洲综合电影一区二区三区| 欧美激情精品久久久久| 欧美一级专区| 亚洲欧美国产不卡| 日韩视频一区二区三区在线播放免费观看 | 国产精品萝li| 看片网站欧美日韩| 亚洲一区亚洲| 亚洲风情亚aⅴ在线发布| 久久久国产午夜精品| 亚洲欧洲日产国产综合网| 国产在线一区二区三区四区| 国产精品地址| 国产精品video| 国产精品99免费看 | 亚洲一区欧美一区| 一本色道久久88综合日韩精品| 黄色另类av| 亚洲成人在线视频播放| 国产午夜精品视频免费不卡69堂| 欧美无乱码久久久免费午夜一区 | 亚洲欧美日韩另类| 亚洲一区bb| 亚洲欧美日本伦理| 久久精品日韩欧美| 久久久久女教师免费一区| 裸体歌舞表演一区二区| 欧美大片专区| 国产精品国产三级国产aⅴ入口| 国产精品久久久久免费a∨大胸| 国产精品成人观看视频国产奇米| 国产精品女主播| 性欧美1819性猛交| 久久久久国产精品午夜一区| 老牛国产精品一区的观看方式| 欧美日韩精品一区二区天天拍小说| 欧美人与禽性xxxxx杂性| 欧美日韩亚洲一区二区三区| 国产日产欧美一区| 久久成人一区二区| 欧美精品激情在线| 国产午夜久久久久| 一区二区三区www| 免费在线观看一区二区| 一区二区三区四区国产精品| 久久成人精品视频| 国产精品久久久久国产a级| 最近看过的日韩成人| 久久男人资源视频| 亚洲欧美日韩人成在线播放| 国产精品成人一区二区三区夜夜夜| 亚洲三级视频在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲综合国产| 国产亚洲一区二区三区| 久久精品国产99精品国产亚洲性色| 国产精品99久久久久久久久| 欧美日本免费| 在线亚洲一区二区| 在线亚洲观看| 欧美特黄一级大片| 午夜影视日本亚洲欧洲精品| 亚洲视频精品在线| 国产精品天美传媒入口| 久久久综合香蕉尹人综合网| 性色av香蕉一区二区| 在线日本欧美| 亚洲美女一区| 国产精品国产成人国产三级| 欧美一区影院| 欧美jizzhd精品欧美巨大免费| 亚洲精品无人区| 中国女人久久久| 国产一区二区三区免费观看| 老司机免费视频久久| 欧美色图首页| 国产欧美精品日韩精品| 久久久久久亚洲精品杨幂换脸 | 欧美久久精品午夜青青大伊人| 亚洲精品一区二区三区婷婷月| 亚洲乱码国产乱码精品精| 国产精品一级在线| 欧美国产一区在线| 国产精品一区2区| 亚洲国产精品一区二区第一页 | 久久午夜色播影院免费高清| 99国内精品久久| 久久精品免费电影| 午夜精品婷婷| 欧美视频你懂的| 亚洲伦伦在线| 99视频+国产日韩欧美| 欧美成年人视频| 亚洲第一网站| 亚洲国产婷婷| 欧美r片在线| 亚洲国产精品v| 亚洲黄一区二区三区| 久久久久成人精品免费播放动漫| 欧美综合国产| 一区二区三区在线观看欧美| 欧美在线观看天堂一区二区三区| 欧美影视一区| 亚洲国产精品久久久久秋霞蜜臀 | 亚洲女优在线| 国产精品视频九色porn|