BZOJ1060 ZJOI2007 時態同步

2022-08-05 01:21:18 字數 1621 閱讀 8079

小q在電子工藝實習課上學習焊接電路板。一塊電路板由若干個元件組成,我們不妨稱之為節點,並將其用數字1,2,3….進行標號。電路板的各個節點由若干不相交的導線相連線,且對於電路板的任何兩個節點,都存在且僅存在一條通路(通路指連線兩個元件的導線序列)。

在電路板上存在乙個特殊的元件稱為「激發器」。當激發器工作後,產生乙個激勵電流,通過導線傳向每乙個它所連線的節點。而中間節點接收到激勵電流後,得到資訊,並將該激勵電流傳向與它連線並且尚未接收到激勵電流的節點。最終,激烈電流將到達一些「終止節點」――接收激勵電流之後不再**的節點。

激勵電流在導線上的傳播是需要花費時間的,對於每條邊e,激勵電流通過它需要的時間為te,而節點接收到激勵電流後的**可以認為是在瞬間完成的。現在這塊電路板要求每乙個「終止節點」同時得到激勵電路――即保持時態同步。由於當前的構造並不符合時態同步的要求,故需要通過改變連線線的構造。目前小q有乙個道具,使用一次該道具,可以使得激勵電流通過某條連線導線的時間增加乙個單位。請問小q最少使用多少次道具才可使得所有的「終止節點」時態同步?

第一行包含乙個正整數n,表示電路板中節點的個數。

第二行包含乙個整數s,為該電路板的激發器的編號。

接下來n-1行,每行三個整數a , b , t。表示該條導線連線節點a與節點b,且激勵電流通過這條導線需要t個單位時間。

僅包含乙個整數v,為小q最少使用的道具次數。

3

11 2 1

1 3 3

對於40%的資料,\(n \leq 1000\)

對於100%的資料,\(n \leq 500000\)

對於所有的資料,\(t \leq 1000000\)

給出一棵樹,問你如何將某些邊的邊權加上乙個值,使得所有葉節點的深度相等。

其實很簡單的啦,你只需要預處理出每個節點子樹內最遠的葉節點距離,然後對於乙個節點,其貢獻為\(f[fa[i]]-f[i]-dis[fa[i],i]\)

最後累和一下即可。

#include #define mn 500005

#define r register

#define ll long long

#define file(x) freopen(#x".in","r",stdin);freopen(#x".out","w",stdout);

#define end fclose(stdin);fclose(stdout)

inline int read()

inline ll max(ll a,ll b)

int n,to[mn<<1],nxt[mn<<1],v[mn<<1],rt,en,h[mn];ll f[mn],ans;

inline void ins(int x,int y,int vl)

inline void dfs(int u,int fa)

int main()dfs(rt,0);printf("%lld\n",ans);

}

BZOJ 1060 ZJOI2007 時態同步

time limit 10 sec memory limit 162 mb submit 3380 solved 1356 submit status discuss description 小q在電子工藝實習課上學習焊接電路板。一塊電路板由若干個元件組成,我們不妨稱之為節點,並將其用數 字1,2,...

BZOJ1060 ZJOI2007 時態同步

小q在電子工藝實習課上學習焊接電路板。一塊電路板由若干個元件組成,我們不妨稱之為節點,並將其用數 字1,2,3 進行標號。電路板的各個節點由若干不相交的導線相連線,且對於電路板的任何兩個節點,都存在且僅 存在一條通路 通路指連線兩個元件的導線序列 在電路板上存在乙個特殊的元件稱為 激發器 當激發器工...

BZOJ1060 ZJOI2007 時態同步

bzoj1060 zjoi2007 時態同步 小q在電子工藝實習課上學習焊接電路板。一塊電路板由若干個元件組成,我們不妨稱之為節點,並將其用數字1,2,3 進行標號。電路板的各個節點由若干不相交的導線相連線,且對於電路板的任何兩個節點,都存在且僅存在一條通路 通路指連線兩個元件的導線序列 在電路板上...