模擬 搜尋 時態同步

2021-06-05 20:50:06 字數 1683 閱讀 2190

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

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

激勵電流在導線上的傳播是需要花費時間的,對於每條邊e,激勵電流通過它需要的時間為te

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

輸入檔案synch.in第一行包含乙個正整數n,表示電路板中節點的個數。

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

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

輸出檔案synch.out僅包含乙個整數v,為小q最少使用的道具次數。

1 2 1

1 3 3

對於40%的資料,n ≤ 1000

對於100%的資料,n ≤ 500000

對於所有的資料,te

≤ 1000000

zjoi一試最後一題居然是一道水題。。這給我們乙個啟示:

當前兩題都不會做的時候,千萬不要慌張,也許菜題在後面等著我們。。

這道題用深蒐會爆棧,學到了用廣搜可以達到深搜的後序遍歷的效果,主要就是記錄佇列元素的前驅。

#include #include #define max(a,b) ((a)>(b)?(a):(b))

typedef long long ll;

const ll inf = 0x7f7f7f7f7f7f7f7fll;

struct node

;node* head[500010];

long n;long s;

void insert(long a,long b,ll t)

long que[1000010];

ll dis[500010];

bool vis[500010];

long pre[1000010];

long nxt[500010];

long _count[500010];

ll maxx[500010];

ll _inc[500010];

ll ans = 0;

int main()

for (long i=r;i>0;i--)

maxx[u] = max(maxx[u],maxx[v]);

_inc[u] += maxx[v];

_count[u]++;

ans += _count[v]*maxx[v]-_inc[v];

if (_inc[v] > 10000000)

}std::cout << ans;

return 0;

}

ZJOI2007 時態同步

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

ZJOI2007 時態同步

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

ZJOI2007 時態同步

傳送門 這道題目有點水啊,只要深搜到葉子節點,然後回溯,找出乙個點到它的兒子節點的最大距離,ans ans ans 最大距離 到每個兒子節點距離,最後記得把它父親節點到它的距離加上之前所求的最大距離。include define il inline define ll long long defin...