AT_kupc2019_b ナップサック問題
题目描述
有 $n$ 个物品,编号从 $1$ 到 $n$。
每个物品都有一个价值和一个重量,第 $i$ 个物品的价值为 $v_i$,重量为 $w_i$。
你可以从这些物品中选择若干个,使得所选物品的总重量不超过 $W$,并且使所选物品的总价值最大。
但是,有 $m$ 个条件。
第 $j$ 个条件为 $(a_j, b_j)$,表示“如果选择了第 $a_j$ 个物品,则必须选择第 $b_j$ 个物品;如果选择了第 $b_j$ 个物品,则必须选择第 $a_j$ 个物品”。
请在满足所有这些条件的前提下,从 $n$ 个物品中选择若干个,使得总重量不超过 $W$,并输出所能获得的最大总价值。
输入格式
输入通过标准输入按以下格式给出。
> $n$ $m$ $W$
> $w_1$ $v_1$
> $w_2$ $v_2$
> $\vdots$
> $w_n$ $v_n$
> $a_1$ $b_1$
> $a_2$ $b_2$
> $\vdots$
> $a_m$ $b_m$
输出格式
请输出在满足 $m$ 个条件的前提下,从 $n$ 个物品中选择若干个、且总重量不超过 $W$ 时所能获得的最大总价值。
说明/提示
### 限制条件
- 输入中的所有数值均为整数。
- $1 \leq n \leq 100$
- $0 \leq m \leq \frac{n(n-1)}{2}$
- $1 \leq W \leq 10^4$
- $1 \leq w_i \leq W$
- $1 \leq v_i \leq 10^7$
- $1 \leq a_i, b_i \leq n$
- $a_i \neq b_i$
- 若 $i \neq j$,则 $(a_i, b_i) \neq (a_j, b_j)$ 且 $(a_i, b_i) \neq (b_j, a_j)$
### 样例解释 1
可以选择第 $1$ 个和第 $2$ 个物品,使得总价值为 $6$,这是最优解。请注意,由于条件限制,不能只选择第 $2$ 个和第 $3$ 个物品。
### 样例解释 2
可以选择所有物品。
### 样例解释 3
无法选择任何物品。
由 ChatGPT 4.1 翻译