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