AT_ttpc2022_j Jewel Game
题目描述
给定一个有 $N$ 个顶点、$M$ 条边的有向图。顶点编号为 $1$ 到 $N$,边编号为 $1$ 到 $M$。第 $i$ 条边($1 \leq i \leq M$)是从顶点 $A_i$ 指向顶点 $B_i$。这个图中可能包含自环,但不存在重边。保证每个顶点至少有一条从该顶点出发的边。
在 $N$ 个顶点中,有 $K$ 个顶点上放置了宝石。第 $i$ 个($1 \leq i \leq K$)宝石放在顶点 $V_i$ 上,价值为 $W_i$。
First 君和 Second 君在这个图上进行游戏。游戏开始时,First 君在顶点 $F$,Second 君在顶点 $S$。First 君先手,之后两人轮流进行以下操作:
- 从自身当前位置出发,选择一条外连的边,沿该边移动到下一个顶点。如果到达的顶点上有宝石,就获得该宝石,并将它从图上移除。
当所有宝石被取走,或游戏过程中出现与之前完全相同的局面(即轮到谁行动、两位玩家的位置、剩余宝石的分布三者都与之前任一回合一致),游戏便结束。
两人都以最大化“自己获得的宝石总价值 $-$ 对方获得的宝石总价值”为目标行动。请计算当两人都采取最优策略时,游戏结束时 First 君获得的宝石总价值 $-$ Second 君获得的宝石总价值。
输入格式
输入以如下格式从标准输入读入:
```
N M F S
A_1 B_1
⋮
A_M B_M
K
V_1 W_1
⋮
V_K W_K
```
输出格式
输出一行答案。
说明/提示
### 样例解释 1
任意顶点都可到达所有宝石。游戏流程如下:
- First 君从顶点 $1$ 移动到顶点 $5$,获得价值 $96$ 的宝石。
- Second 君从顶点 $1$ 移动到顶点 $3$,获得价值 $84$ 的宝石。
- First 君从顶点 $5$ 移动到顶点 $4$,获得价值 $38$ 的宝石。
- Second 君从顶点 $3$ 移动到顶点 $2$,获得价值 $4$ 的宝石。
于是答案为 $(96 + 38) - (84 + 4) = 46$。
### 数据范围
- 输入均为整数。
- $2 \leq N \leq 30$
- $1 \leq F, S \leq N$
- $1 \leq A_i, B_i \leq N$($1 \leq i \leq M$)
- $(A_i, B_i) \neq (A_j, B_j)$($1 \leq i < j \leq M$)
- 对任意 $x$($1 \leq x \leq N$),存在 $A_i = x$ 的 $i$。
- $1 \leq K \leq 10$
- $1 \leq V_1 < \dots < V_K \leq N$
- $V_i \notin \{F, S\}$($1 \leq i \leq K$)
- $1 \leq W_i \leq 10^8$($1 \leq i \leq K$)
由 ChatGPT 5 翻译