樹形結構【電路板的各個節點由若干不相交的導線相連線,且對於電路板的任何兩個節點,都存在且僅存在一條通路(通路指連線兩個元件的導線序列)】
題中給出所有邊的花費,規定要使得從根點s到所有的終止節點的花費一致。
問,需要給所有邊增加多少花費?
資料範圍long long
dis[i]儲存 終止節點到i的最大花費。 //dfs從葉節點開始維護一下就行
dp[u]儲存 終止節點到u 需要增加的花費
(假)轉移方程:
已更新部分子樹的dp[u] + 當前子樹已更新部分dp[v] + uv之間需要增加的花費
uv之間增加花費,即:終止節點到u需要增加的花費dis[u] - 終止節點到當前子樹v需要增加的花費dis[v] - u到v的邊權值w
#include#include#includeusing namespace std;
typedef long long ll;
const int maxn=500005;
int n,s;
struct node
e[maxn<<1];
int head[maxn],num=0;
ll dis[maxn],dp[maxn];
void add(int u,int v,int w)
void dfs(int u,int fa)
}void tree_dp(int u,int fa)
}int main()
dfs(s,-1);
tree_dp(s,-1);
cout<}
洛谷P1131 時態同步
做這個題還是比較順手的,起碼做起來挺舒服的。他讓我們求使所有葉子節點到根節點距離一樣的代價,那麼作為一顆子樹來說首先就要滿足這點,因為再往上走的路徑都是一樣的,因此我們需要先求所有子樹的最大深度,然後答案 子樹最大深度 子樹蛾子子樹最大深度 子樹到其蛾子的距離 修改蛾子子樹的代價 include i...
ZJOI2007 時態同步(洛谷1131)
小q在電子工藝實習課上學習焊接電路板。一塊電路板由若干個元件組成,我們不妨稱之為節點,並將其用數字1,2,3 進行標號。電路板的各個節點由若干不相交的導線相連線,且對於電路板的任何兩個節點,都存在且僅存在一條通路 通路指連線兩個元件的導線序列 在電路板上存在乙個特殊的元件稱為 激發器 當激發器工作後...
洛谷P1131 ZJOI2007 時態同步
小qqq在電子工藝實習課上學習焊接電路板。一塊電路板由若干個元件組成,我們不妨稱之為節點,並將其用數字1,2,3 1,2,3 1,2,3 進行標號。電路板的各個節點由若干不相交的導線相連線,且對於電路板的任何兩個節點,都存在且僅存在一條通路 通路指連線兩個元件的導線序列 在電路板上存在乙個特殊的元件...