五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

設(shè)置醫(yī)院C++

2023-07-25 21:55 作者:喵雕沙  | 我要投稿

題目描述

設(shè)有一棵二叉樹(如下圖),其中圈中的數(shù)字表示結(jié)點(diǎn)中居民的人口,圈邊上數(shù)字表示結(jié)點(diǎn)編號?,F(xiàn)在要求在某個(gè)結(jié)點(diǎn)上建立一個(gè)醫(yī)院,使所有居民所走的路程之和為最小,同時(shí)約定,相鄰結(jié)點(diǎn)之間的距離為1。就本圖而言,若醫(yī)院建在1處,則距離和=4+12+2×20+2×40=136=4+12+2×20+2×40=136;若醫(yī)院建在3處,則距離和=4×2+13+20+40=81=4×2+13+20+40=81……



輸入

第一行一個(gè)整數(shù)n,表示樹的結(jié)點(diǎn)數(shù)(n≤100)。接下來的n行每行描述了一個(gè)結(jié)點(diǎn)的狀況,包含三個(gè)整數(shù),整數(shù)之間用空格(一個(gè)或多個(gè))分隔,其中:第一個(gè)數(shù)為居民人口數(shù);第二個(gè)數(shù)為左鏈接,為0表示無鏈接;第三個(gè)數(shù)為右鏈接,為0表示無鏈接。

輸出

一個(gè)整數(shù),表示最小距離和。

樣例輸入?復(fù)制

5 13 2 3 4 0 0 12 4 5 20 0 0 40 0 0

樣例輸出?復(fù)制

81

提示

數(shù)據(jù)規(guī)模:
? 1<=N<=100 ,? 1<=w<=105


#include <bits/stdc++.h>
using namespace std;
const int N=105,M=2*N,INF=0x3f3f3f3f;
int h[N],w[N],e[M],ne[M],idx,n;
void add(int a,int b){e[idx]=b,ne[idx]=h[a],h[a]=idx++;}
int dfs(int u,int root,int dist)
{
????int res=w[u]*dist;
????for(int i=h[u];~i;i=ne[i])
????{
????????int j=e[i];
????????if(j!=root)
????????????res+=dfs(j,u,dist+1);
????}
????return res;
}
int main()
{
????ios::sync_with_stdio(false);
????cin.tie(0);
????cout.tie(0);
????memset(h,-1,sizeof h);
????cin>>n;
????for(int i=1;i<=n;i++)
????{
????????int a,b,c;
????????cin>>c>>a>>b;
????????if(a)
????????????add(i,a),add(a,i);
????????if(b)
????????????add(i,b),add(b,i);
????????w[i]=c;
????}
????int res=INF;
????for(int i=1;i<=n;i++)
????????res=min(res,dfs(i,-1,0));
????cout<<res<<endl;
????return 0;
}


設(shè)置醫(yī)院C++的評論 (共 條)

分享到微博請遵守國家法律
沈丘县| 交城县| 玉龙| 四会市| 平陆县| 福贡县| 科技| 孙吴县| 岱山县| 庆安县| 叙永县| 四会市| 徐水县| 舞阳县| 建宁县| 三门县| 江川县| 盘锦市| 大宁县| 双江| 新乡县| 静宁县| 平凉市| 寿光市| 鄂伦春自治旗| 垦利县| 会理县| 集贤县| 应用必备| 荥经县| 榆社县| 长葛市| 雷山县| 西吉县| 屯留县| 内江市| 长泰县| 仁布县| 平利县| 连山| 建昌县|