很考验思维的一道题
此题为 North American Invitational Programming Contest (NAIPC) 2014 F 题,题目链接。
题意 #
给出一张图,每个顶点有ai的金子,你要从顶点 1 沿最短路到顶点 2,再沿任意路径返回。对于路径上的每个顶点,你可以选择抢劫他们的金子,但如果你抢了金子,返回的时候就不能经过这个顶点,问最多能抢多少金子。
题解 #
由于 n 很小,可以考虑暴力枚举每一条最短路。我们不妨换个角度思考:去的时候先把路径上的金子都抢了,回来的时候再把经过的顶点的金子还回去。这样回去的路径就可以看作是最短路:如果经过在来的路径上的点花费就是ai没,否则花费就是 0.
代码 #