洛谷P1131 ZJOI2007 時態同步

2021-09-11 19:11:06 字數 1792 閱讀 3264

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

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

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

輸入格式:

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

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

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

輸出格式:

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

輸入樣例#1:複製

3

11 2 1

1 3 3

輸出樣例#1:複製

2
對於40%40\%40%的資料,n≤1000n ≤ 1000n≤1000

對於100%100\%100%的資料,n≤500000n ≤ 500000n≤500000

對於所有的資料,te≤1000000t_e ≤ 1000000te​≤1000000

**如下:

#include #include #include #include #include #include #include #include using namespace std;

#define max_n 500000

typedef long long lint;

typedef pairpil;//小技巧:pil=pair+int+long long

vectorg[max_n + 5];//存邊

int dep[max_n + 5];

lint dp[max_n + 5];

lint f[max_n + 5];//最大權值

void dfs(int ind)

return ;

}bool cmp(int a, int b)

int main()

dep[s] = 1;

dfs(s);//以s為根節點求深度

sort(ind_arr.begin(), ind_arr.end(), cmp);//按照深度排序

for (int k = 0; k < ind_arr.size(); k++)

f[ind] = max_num;

for (int i = 0; i < g[ind].size(); i++)

}cout << dp[s] << endl;//求出使用道具的次數

return 0;

}

洛谷P1131 ZJOI2007 時態同步

題目 貪心貪心思路是先找到每個節點的到最深處的路徑,並找到最大值。然後最後答案要加上該最大值和所有路徑權值的差。include define n 600101 define int long long using namespace std int n,root,cnt,ans,lin n siz ...

洛谷 P1131 ZJOI2007 時態同步

觀察題目 我們發現所給圖為一棵樹,則終止節點就為葉子節點,我們dfs一遍即可 先看 吧 include include include include include define inf 0x3f3f3f3f using namespace std const int maxn 5e5 4 int...

洛谷P1131 ZJOI2007 時態同步

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