亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

51nod 1405 樹的距離之和 【dfs--記憶dp??樹形dp??】

2019-11-06 08:20:59
字體:
來源:轉載
供稿:網友

1405 樹的距離之和基準時間限制:1 秒 空間限制:131072 KB 分值: 40 難度:4級算法題給定一棵無根樹,假設它有n個節點,節點編號從1到n, 求任意兩點之間的距離(最短路徑)之和。Input
第一行包含一個正整數n (n <= 100000),表示節點個數。后面(n - 1)行,每行兩個整數表示樹的邊。Output
每行一個整數,第i(i = 1,2,...n)行表示所有節點到第i個點的距離之和。Input示例
41 23 24 2Output示例
5355曹鵬 (題目提供者)

題解:

先定義四個概念--

lower_sum 表示此點的全部孩子到此點的距離之和。dian_sum為此點和孩子點的總個數。border_sum 為 非此點孩子的節點到此點的距離之和。

ans_sum 為此點到所有點之和。

然后第一編dfs求解lower_sum 和 dian_sum  

第二遍dfs求解 border_sum 和 ans_sum

代碼:

//每個邊的利用率為 n *  m ----   總和  --#include<stdio.h>#include<string.h>#include<vector>#include<iostream>#include<algorithm>using namespace std;#define LL long longvector<int> V[100100];struct node{    LL lower_sum,dian_sum,border_sum,ans_sum;/*    lower_sum 表示此點的全部孩子到此點的距離之和,    dian_sum為此點和孩子點的總個數,    border_sum 為 非此點孩子的節點到此點的距離之和。 */}pp[100100];LL ans;int n;void dfs_one(int x,int f){    pp[x].dian_sum=1;    for (int i=0;i<V[x].size();i++)    {        int v=V[x][i];        if (v==f) continue;        dfs_one(v,x);        pp[x].lower_sum+=pp[v].dian_sum+pp[v].lower_sum;        pp[x].dian_sum+=pp[v].dian_sum;    } //   cout<<x<<' '<<pp[x].dian_sum<<' '<<pp[x].lower_sum<<' '<<pp[x].border_sum<<endl;}void dfs_two(int x,int f){    if (f!=-1)    {        pp[x].border_sum=pp[f].border_sum+pp[f].lower_sum+n-2*pp[x].dian_sum-pp[x].lower_sum;        pp[x].ans_sum=pp[x].border_sum+pp[x].lower_sum;    }    else    pp[x].ans_sum=pp[x].lower_sum;  //  cout<<x<<' '<<pp[x].dian_sum<<' '<<pp[x].lower_sum<<' '<<pp[x].border_sum<<' '<<pp[x].ans_sum<<endl;    for (int i=0;i<V[x].size();i++)    {        int v=V[x][i];        if (v==f) continue;        dfs_two(v,x);    }}int main(){    int a,b;    cin>>n;    for (int i=1;i<n;i++)    {        cin>>a>>b;        V[a].push_back(b);        V[b].push_back(a);    }    ans=0;    memset(pp,0,sizeof(pp));    dfs_one(1,-1);  //  cout<<"/n/n"<<endl;    dfs_two(1,-1);//    cout<<ans<<endl;    for (int i=1;i<=n;i++)        cout<<pp[i].ans_sum<<endl;    return 0;}

另外附一個求書上任意兩點之和的求解方法-.- (我開始把題意理解成了這個問題---寫好看了樣例發現不是這個問題  -.-  wwwwwww ).

即考慮每條邊的利用率----

每條邊的利用率為此邊下方的點個數N * 此邊上方的點個數 M   * 2  -----   即下方到上方  和 上方到下方-----

代碼:

//每個邊的利用率為 n *  m ----   總和  --#include<cstdio>#include<cstring>#include<vector>#include<iostream>#include<algorithm>using namespace std;#define LL long longvector<int> V[100100];LL ans;int n;int dfs(int x,int f){    int he=1,k;    for (int i=0;i<V[x].size();i++)    {        if (V[x][i]==f)            continue;        k=dfs(V[x][i],x);        ans+=k*(n-k)*2;        he+=k;    }    return he;}int main(){    int a,b;    cin>>n;    for (int i=1;i<n;i++)    {        cin>>a>>b;        V[a].push_back(b);        V[b].push_back(a);    }    ans=0;    dfs(1,-1);    cout<<ans<<endl;    return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美xxxx18性欧美| 北条麻妃99精品青青久久| 亚洲精选在线观看| 亚洲色图综合网| 亚洲视频在线播放| 在线看片第一页欧美| 91午夜理伦私人影院| 欧美电影免费观看电视剧大全| 久久久精品2019中文字幕神马| 国产成人精品网站| 亚洲最新视频在线| 亚洲一区二区三| 亚洲乱码一区av黑人高潮| 国产区精品视频| 国产精品高精视频免费| 欧美精品精品精品精品免费| 亚洲福利在线视频| 欧美激情精品久久久久久蜜臀| 欧美日韩中文字幕在线| 91高潮在线观看| 国产精品爱啪在线线免费观看| 国产成人精品视频在线观看| 精品在线欧美视频| 亚洲日本中文字幕免费在线不卡| 日韩一区二区在线视频| 欧美电影在线观看完整版| 日韩美女免费观看| 日本一区二区在线免费播放| 欧美在线一区二区视频| 亚洲一区免费网站| 久久人人看视频| 国内精品小视频在线观看| 亚洲电影免费观看高清| 亚洲一区二区三区久久| 日本欧美黄网站| 国产亚洲欧洲高清| 最近2019中文字幕一页二页| 色琪琪综合男人的天堂aⅴ视频| 亚洲japanese制服美女| 欧美亚洲一级片| 最近2019中文字幕在线高清| 亚洲最大福利视频网站| 91在线观看免费网站| 日韩av不卡电影| 美日韩精品免费视频| 96pao国产成视频永久免费| 亚洲一区二区三区成人在线视频精品| 欧美日韩国产精品| 中文字幕亚洲欧美日韩在线不卡| 茄子视频成人在线| 日韩精品在线观看网站| 中文亚洲视频在线| 亚洲mm色国产网站| 疯狂蹂躏欧美一区二区精品| 亚洲欧美成人精品| 国产精品日韩在线一区| 91在线视频一区| 亚洲人成自拍网站| 欧美日韩国产综合视频在线观看中文| 中文字幕日韩欧美在线视频| 91九色单男在线观看| 亚洲91精品在线观看| 91精品国产91久久久久福利| 久久综合久久八八| 国内精品久久久久久久| 欧美精品一本久久男人的天堂| 成人av在线亚洲| 国产成人精彩在线视频九色| 中文字幕日韩欧美精品在线观看| 成人精品视频久久久久| 久久五月天综合| 91chinesevideo永久地址| 国产日产久久高清欧美一区| 国产日韩在线视频| 日韩亚洲欧美成人| 亚洲国产成人久久综合| 日韩成人中文字幕在线观看| 92看片淫黄大片看国产片| 亚洲有声小说3d| 精品国产欧美一区二区五十路| 九九久久精品一区| 国产精品爽黄69天堂a| 日韩av综合网| 欧美日韩人人澡狠狠躁视频| 91久久久国产精品| 插插插亚洲综合网| 91超碰caoporn97人人| 亚洲成色www8888| 不用播放器成人网| 亚洲一区二区久久久久久久| 精品亚洲男同gayvideo网站| 亚洲午夜色婷婷在线| 中文字幕亚洲欧美| 欧美性少妇18aaaa视频| 久久成人在线视频| 欧美日韩视频免费播放| 亚洲成人精品久久| 亚洲精品国产精品久久清纯直播| 日韩在线观看高清| 国产伦精品免费视频| 最近2019中文字幕大全第二页| 国产精品亚洲视频在线观看| 国产精品无av码在线观看| 亚洲影视中文字幕| 国产精品毛片a∨一区二区三区|国| 日日摸夜夜添一区| 日韩av在线精品| 91精品久久久久久综合乱菊| 欧美在线视频导航| 91免费在线视频| 91精品国产色综合| 欧美成人精品一区二区三区| 亚洲999一在线观看www| 欧美综合激情网| 亚洲天堂av在线免费观看| 美女视频久久黄| 欧美激情在线观看视频| 一区二区三区动漫| 亚洲色图35p| 国产美女久久精品香蕉69| 久久久久国产一区二区三区| 成人精品福利视频| 日韩av综合中文字幕| 国产精品青青在线观看爽香蕉| 国产精品久久久精品| 欧美日韩人人澡狠狠躁视频| 精品视频在线播放色网色视频| 国产99视频在线观看| 日韩av影院在线观看| 国产精品久久久91| 久久久久99精品久久久久| 国产成人自拍视频在线观看| 日韩网站免费观看| 日韩精品极品视频| 日韩欧美一区二区三区| 国产精品久久久久aaaa九色| 亚洲三级 欧美三级| 欧美精品一二区| 少妇精69xxtheporn| 欧美激情网站在线观看| 亚洲日本欧美中文幕| 欧美色道久久88综合亚洲精品| 亚洲乱码av中文一区二区| 日韩欧美亚洲国产一区| 亚洲第一在线视频| 中文字幕在线精品| 在线视频一区二区| 欧美精品一本久久男人的天堂| 8x海外华人永久免费日韩内陆视频| 国产精品一区二区三区免费视频| 欧美国产在线视频| 久久久久久综合网天天| 51精品国产黑色丝袜高跟鞋| 国产精品免费久久久久久| 亚洲xxxxx电影| 亚洲日本aⅴ片在线观看香蕉| 深夜福利一区二区| 国产免费一区视频观看免费| 91亚洲人电影| 欧美性一区二区三区| 亚洲性日韩精品一区二区| 97精品一区二区视频在线观看| 亚洲女人初尝黑人巨大| 国产69精品久久久久99|