题意
这题描述很复杂 .. 就不概括了
Alice听说在一片神奇的大陆MagicLand,有一个古老的传说……
很久很久以前,那个时候 MagicStates共和国刚刚成立。 反对新政府的势力虽已被镇压,但仍然在暗地活动。这一次,情报局得到了一个令人震惊的消息,被软禁在首都府邸中的Frank ——著名的反对派领袖,秘密逃出首都,去往反对派的大本营。根据相关的情报,Frank计划通过城市之间 发达的高速公路,经过最短的路程抵达目的地。不妨将 MagicStates共和国简化为由N个城市,M条高速公路构成的连通的无向图,首都为城市1,反对派的大本营为城市N。
每条高速公路连接两个不同的城市,且路程是已知的。而Frank选择了一条从城市1到城市N的最短路径作为他的逃跑路线。为了阻止Frank,共和国总统决定在某些城市的高速公路的出入口设立检查 点,在Frank经过检查点时将他逮捕。
举例来说,如果有一条高速公路连接城市u和城市v,在这条公路的城市u或城市v的出入口设立检查点,那么Frank经过高速公路时就会被发现。特别的是,由于城市N实际上处在反对派的控制下,所以不能在城市N设立检查点。
然而在任何城市设立检查点都需要一定的费用。更具体的,若在城市 u设立k个检查点,就要花费 Au乘以k的代价,其中Au是城市u的相关参数。值得注意的是,这个代价与这k个检查点具体设在哪些公路的出入口无关,于是,总统责令情报局拟定一个方案,花费最小的代价使得无论Frank选择哪条最短路线,都会在(除城市N以外)某个城市的高速公路出入口被发现。读到这里,Alice很想知道阻止Frank所需要花费的最小代价,并且她还希 望知道最优方案是否是唯一的。只好再请你帮助她了。
注意,我们称两个方案不同当且仅当存在某城市k,两种方案中在城市 k的检查点的设置(而不仅是数目)是不同的。
注意,输入文件包含多组测试数据。
分析
1>首先,不考虑判定唯一解时,显然我们需要将$1\to n$的最短路网求出来,在这个最短路网上考虑.
很容易发现我们只需要求一个最小割就时第二问.其中边$(u,v)$边权为$min(A[u],A[v])$
2>下面考虑怎样判断最小割是唯一的.
你真的只在想”最小割是否唯一”这个问题吗?那你就大错特错了我会告诉你我考试的时候就一直这么想的吗?渣渣
“最小割是否唯一”这个问题解决的并不是全部.
思考这种情况一条边$(u,v)$,$A[u]=A[v]$,这时即使最小割唯一,但是因为我们实际设置检查点的时候既可以在$u$也可以在$v$,会导致解的不唯一.若最小割唯一,我们就可以再枚举一遍被割掉的边两端的$A$值是否相等即可.
代码
1 | #include <cstdio> |