https://codeforces.com/problemset/problem/796/C
C. Bank Hacking
time limit per test
2 seconds
memory limit per test
256 megabytes
Although Inzane successfully found his beloved bone, Zane, his owner, has yet to return. To search for Zane, he would need a lot of money, of which he sadly has none. To deal with the problem, he has decided to hack the banks.
There are
n banks, numbered from
1 to
n. There are also
n-1 wires connecting the banks. All banks are initially
online. Each bank also has its initial strength: bank
i has initial strength
ai.
Let us define some keywords before we proceed. Bank
i and bank
j are
neighboring if and only if there exists a wire directly connecting them. Bank
i and bank
j are
semi-neighboring if and only if there exists an
online bank
k such that bank
i and bank
k are
neighboring and bank
k and bank
j are
neighboring.
When a bank is hacked, it becomes
offline (and no longer
online), and other banks that are
neighboring or
semi-neighboring to it have their strengths increased by
1.
To start his plan, Inzane will choose a bank to hack first. Indeed, the strength of such bank must not exceed the strength of his computer. After this, he will repeatedly choose some bank to hack next until all the banks are hacked, but he can continue to hack bank
x if and only if all these conditions are met:
-
Bank x is online. That is, bank x is not hacked yet.
-
Bank x is neighboring to some offline bank.
-
The strength of bank x is less than or equal to the strength of Inzane's computer.
Determine the minimum strength of the computer Inzane needs to hack all the banks.
Output
Print one integer− the minimum strength of the computer Inzane needs to accomplish the goal.
Note
In the first sample, Inzane can hack all banks using a computer with strength
5. Here is how:
-
Initially, strengths of the banks are [1,2,3,4,5].
-
He hacks bank 5, then strengths of the banks become [1,2,4,5,-].
-
He hacks bank 4, then strengths of the banks become [1,3,5,-,-].
-
He hacks bank 3, then strengths of the banks become [2,4,-,-,-].
-
He hacks bank 2, then strengths of the banks become [3,-,-,-,-].
-
He completes his goal by hacking bank 1.
In the second sample, Inzane can hack banks
4,
2,
3,
1,
5,
7, and
6, in this order. This way, he can hack all banks using a computer with strength
93.
尽管Inzane成功地找到了他心爱的骨头,但他的主人Zane还没有回来。为了寻找赞恩,他需要很多钱,可惜他没有。为了解决这个问题,他决定入侵银行。
共有n个存储体,编号从1到n。还有n-1根电线连接存储体。所有银行最初都是在线的。每个银行也有其初始实力:银行i有初始实力ai。
让我们在继续之前定义一些关键字。存储体i和存储体j是相邻的,当且仅当存在直接连接它们的电线时。存储体i和存储体j是半相邻的,当且仅当存在在线存储体k。
当一家银行被黑客入侵时,它将离线(不再在线),与之相邻或半相邻的其他银行的实力将增加1。
为了开始他的计划,Inzane将首先选择一家银行进行黑客攻击。事实上,这家银行的实力绝不能超过他的电脑。在此之后,他将反复选择下一个要黑客攻击的银行,直到所有银行都被黑客攻击,但他可以继续黑客攻击x银行,前提是且仅当满足所有这些条件:
银行x在线。也就是说,x银行还没有被黑客入侵。
银行x与一些离线银行相邻。
银行x的强度小于或等于Inzane计算机的强度。
确定Inzane破解所有银行所需的计算机的最小强度。