最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

435 樹(shù)形DP 積蓄程度【動(dòng)態(tài)規(guī)劃】

2023-04-26 15:06 作者:零-雪鴉  | 我要投稿

```C++

#include <iostream>

#include <cstring>

#include <algorithm>

using namespace std;


const int N = 200010, INF = 0x3f3f3f3f;

int h[N], to[N * 2], w[N * 2], ne[N * 2], tot; //鄰接表

int d[N];???//d[u]記錄從u點(diǎn)向下流出的最大流量

int up[N];??//up[u]記錄從u點(diǎn)向上流出的最大流量

int deg[N];??//deg[i]記錄點(diǎn)i的度數(shù)


void add(int a, int b, int c) {

to[++tot] = b, w[tot] = c, ne[tot] = h[a], h[a] = tot;

}

int dfs_d(int u, int fa) { //從葉點(diǎn)開(kāi)始向上遞推u點(diǎn)的下流量

for (int i = h[u]; i; i = ne[i]) {

int v = to[i];

if (v == fa) continue;

int s = dfs_d(v, u);?//返回v點(diǎn)的下流量

d[u] += min(w[i], s); //累加u點(diǎn)的下流量

}

if (deg[u] == 1) return w[h[u]]; //若u是葉

return d[u];?????????//返回u點(diǎn)的下流量

}

void dfs_up(int u, int fa) { //從根點(diǎn)開(kāi)始向下遞推v點(diǎn)的上流量

for (int i = h[u]; i; i = ne[i]) {

int v = to[i];

if (v == fa) continue;

if (deg[u] == 1) up[v] = w[i];

// else if (deg[v] == 1) up[v] = min(w[i], d[u] - w[i] );

else up[v] = min( d[u] - min(d[v], w[i]) + up[u],?w[i]);

dfs_up(v, u);

}

}

int main() {

int t, n;

scanf("%d", &t);

while (t--) {

scanf("%d", &n);

tot = 0;

memset(h, 0, sizeof h);

memset(d, 0, sizeof d);

memset(up, 0, sizeof up);

memset(deg, 0, sizeof deg);

for (int i = 1; i < n; i++) {

int a, b, c;

scanf("%d%d%d", &a, &b, &c);

add(a, b, c), add(b, a, c);

deg[a]++, deg[b]++;

}


dfs_d(1, -1); //向上遞推下流量

up[1] = 0;??//根的上流量為0

dfs_up(1, -1); //向下遞推上流量

int ans = 0;

for (int i = 1; i <= n; i++) ans = max(ans, up[i] + d[i]);

printf("%d\n", ans);

}

return 0;

}

```


注釋部分是代碼 else if (deg[v] == 1)是雍余邏輯

435 樹(shù)形DP 積蓄程度【動(dòng)態(tài)規(guī)劃】的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
河曲县| 兴业县| 卫辉市| 闽清县| 长乐市| 丰镇市| 张家口市| 博客| 洱源县| 临夏市| 阿尔山市| 怀来县| 双江| 静海县| 双柏县| 桓台县| 永定县| 军事| 越西县| 胶州市| 霸州市| 毕节市| 磐安县| 金昌市| 泗水县| 米泉市| 南郑县| 奉化市| 通渭县| 淳化县| 宝应县| 霍城县| 武隆县| 栾城县| 驻马店市| 家居| 闽侯县| 灌云县| 江口县| 阿合奇县| 远安县|