51 NOD 1325 兩棵樹的問題

2022-06-03 14:30:13 字數 917 閱讀 6400

對於 100% 的資料, n<=50.

solution:

發現n比較小,所以我們可以花o(n^2)的代價列舉兩顆樹的聯通塊的lca分別是哪個點,然後現在問題就變成了:選乙個點必須要選它在兩個樹上的祖先,問如何選點可以使收益最大。

這是乙個裸的 最大權閉合子圖 問題, 節點連s表示選,連t表示不選,如果選x必須選y那麼就連,最後的答案就是 所有正的a的和 - 這個圖的最小割。

#include#define ll long long

#define pb push_back

using namespace std;

const int maxn=55;

vectorg[maxn];

struct linesl[maxn*maxn];

int t=-1,s,t,d[maxn],cur[maxn];

bool v[maxn];

inline void add(int from,int to,int cap),g[from].pb(t);

l[++t]=(lines),g[to].pb(t);

}inline bool bfs()

}void dfs2(int x,int fa)

inline void build()

}int main()

int uu,vv;

for(int i=1;i

for(int i=1;i

s=0,t=n+1;

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

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

return 0;

}

51nod1325 兩棵樹的問題

題麵點分治 最小割。點分必選的重心,再在樹上dfs判交,轉化為最大權閉合子圖。可以做 k 棵樹的情況。include include include include include include include define rg register define il inline using n...

樹論 兩棵樹

wc2018 t1 簡化版 by oblack.有兩棵有 n 個節點的樹,分別為 a,b,樹上每條邊都有乙個權值 v i 令 disa x,y 和 disb x,y 分別表示 x 節點與 y 節點在樹 a,b 上的距離 請你找出乙個點對 x,y 使得 disa x,y disb x,y 取得最大值,...

兩棵樹的命運

農夫在地里種下了兩粒種子,很快它們變成了兩棵同樣大小的樹苗。第一棵樹開始就決心長成乙個參天大樹,所以它拼命地從地下吸收養料,儲備起來,滋潤每一枝樹幹,盤算著怎樣向上生長,完善自身。由於這個原因,在最初的幾年,它並沒有結果實,這讓農夫很惱火。相反另一棵樹,也拼命地從地下吸取養料,打算早點開花結果,它做...