#P16972. [SGU423] Battle

[SGU423] Battle

题目描述

一座小岛上有 nn 座城市,编号为 1n1\sim n,部分城市之间有双向道路。最初所有城市都彼此独立。

后来城市 ss 和城市 tt 分别建立了两个国家。记第一个国家当前拥有的城市集合为 AA,第二个国家拥有的城市集合为 BB,其他城市仍为独立城市。

对于城市集合 XX,定义 neigh(X)neigh(X) 为所有与 XX 中至少一座城市有道路相连、但不属于 XX 的城市集合。记城市 ii 的人口为 popul(i)popul(i),集合 XX 的总人口为 popul(X)=iXpopul(i)popul(X)=\sum_{i\in X}popul(i)

CC 是一组当前独立城市,则第一个国家可以一次征服整个 CC,当且仅当

$popul(A\cap neigh(C))>popul(C)+popul(B\cap neigh(C))$。

第二个国家可以一次征服整个 CC,当且仅当

$popul(B\cap neigh(C))>popul(C)+popul(A\cap neigh(C))$。

每天早晨第一个国家行动,晚上第二个国家行动。若当前国家存在可征服的非空城市集合,它可以选择其中一种合法征服方案;若没有合法方案,则本次行动跳过。当双方都再也无法扩张时,过程结束。

第一个国家希望最终的 popul(A)popul(B)popul(A)-popul(B) 尽可能大,第二个国家希望该值尽可能小。双方都采取最优策略。

求最终的 popul(A)popul(B)popul(A)-popul(B)

输入格式

第一行三个整数 n,s,tn,s,t,其中 3n133\le n\le131s,tn1\le s,t\le n,且 sts\ne t

接下来 nn 行,每行 nn 个字符。第 ii 行第 jj 个字符为 1 表示城市 i,ji,j 间有双向道路,为 0 表示没有。

最后一行包含 nn 个整数 popul(i)popul(i),满足 1popul(i)1000001\le popul(i)\le100000

输出格式

输出双方均采取最优策略时最终的 popul(A)popul(B)popul(A)-popul(B)

样例

5 1 2
00111
00001
10010
10101
11010
12 100 5 5 7
-85