#P16179. [ICPC 2014 NAIPC] Gold Bandits

[ICPC 2014 NAIPC] Gold Bandits

题目描述

在遥远山峦的一个山谷里,分布着许多村庄。所有村庄都由一位残暴的国王统治,他要求每个村庄每年向他进贡黄金。当国王下令时,村庄必须尽快将黄金送到国王那里。

王国中有一个强盗村庄。这个强盗村庄没有为国王积攒任何黄金,因为他们把每一分钱都花光了!他们该怎么办呢?嗯,由于他们是强盗,当他们在前往城堡的途中经过其他村庄时,他们可以选择(或不选择)从路径上的任何村庄偷走黄金,并将其作为自己的贡品献给国王。

强盗们会以尽可能少的村庄数量到达城堡。他们还有另一个考虑因素——在将黄金交给国王后,强盗们必须能够返回家园。他们认为,如果返回途中经过一个他们偷过黄金的村庄,那是不安全的。除此之外,强盗们不关心返回家园需要多长时间。

请确定强盗们在前往国王城堡的路上能够偷取的最大黄金数量,同时仍能安全返回家园。

输入格式

输入中有多个测试用例。每个测试用例的第一行包含两个整数 nn3n363 \leq n \leq 36)和 mmn1mn(n1)/2n-1 \leq m \leq n(n-1)/2),其中 nn 是村庄的数量,mm 是道路的数量。村庄编号为 1n1 \ldots n。村庄 1 是强盗的家,村庄 2 是国王的城堡。下一行包含 n2n-2 个空格分隔的整数 gg1g5,0001 \leq g \leq 5{,}000),表示村庄 3, 4, ..., nn 中的黄金数量(跳过强盗的家和国王的城堡)。接下来的 mm 行,每行包含两个整数 aabb1a<bn1 \leq a < b \leq n),表示村庄 aa 和村庄 bb 之间有一条道路。所有道路都是双向的。所有 mm(a,b)(a,b) 对都是唯一的。从每个村庄到其他任何村庄都存在直接或间接的路径。输入以一行两个 0 结束。测试数据大小约 18 KB。

输出格式

对于每个测试用例,输出一个整数,表示强盗们能够偷取并仍能安全回家的最大黄金数量。每个整数输出在自己的行上,不要包含空格。输出之间不要打印空行。

3 3
1
1 2
2 3
1 3
4 4
24 10
1 3
2 3
2 4
1 4
6 8
100 500 300 75
1 3
1 4
3 6
4 5
3 5
4 6
2 5
2 6
7 7
90 1000 700 2000 800
1 3
1 4
1 5
3 7
5 6
2 6
3 6
0 0
0
24
800
700

提示

翻译由 DeepSeek V3.2 完成