CF1184B3 The Doctor Meets Vader (Hard)

题目描述

叛军已经积攒了足够的黄金,准备发动全面进攻。现在局势逆转,叛军将派遣飞船攻击帝国基地! 银河系可以表示为一个无向图,包含 $n$ 个行星(节点)和 $m$ 个虫洞(边),每条边连接两个行星。 共有 $s$ 艘叛军飞船和 $b$ 个帝国基地,分别位于银河系中的不同行星上。 每艘飞船有一个位置 $x$,表示其所在行星的编号,攻击力 $a$,一定量的燃料 $f$,以及操作费用 $p$。 每个基地有一个位置 $x$,防御力 $d$,以及一定数量的黄金 $g$。 如果同时满足以下两个条件,飞船可以攻击基地: - 飞船的攻击力大于等于基地的防御力; - 飞船的燃料大于等于飞船所在节点与基地所在节点之间的最短距离(以虫洞数计)。 叛军战士非常自豪。如果一艘飞船无法攻击任何基地,则没有叛军飞行员愿意操作它。 如果一艘飞船被操作,其产生的利润等于其攻击的基地的黄金数量减去操作该飞船的费用。注意,这个值可能为负数。被操作的飞船会选择攻击能使其利润最大的基地。 达斯·维达总是喜欢表现得很富有。因此,每当一个基地被攻击并且黄金被劫走时,他会立即为该基地补充黄金。 因此,对于叛军来说,多艘飞船可以攻击同一个基地,每艘飞船都能获得该基地的全部黄金。 叛军委托 Heidi 和 Doctor 决定应操作哪些飞船,以使总利润最大。 然而,战争持续已久,飞行员们之间建立了牢不可破的友谊,有些飞行员如果朋友不操作飞船,他们也拒绝操作。 他们有 $k$ 条依赖关系,每条为 $s_1, s_2$,表示只有在飞船 $s_2$ 也被操作时,飞船 $s_1$ 才能被操作。

输入格式

第一行输入两个整数 $n$ 和 $m$($1 \leq n \leq 100$,$0 \leq m \leq 10000$),分别表示节点数和边数。 接下来 $m$ 行,每行两个整数 $u$ 和 $v$($1 \leq u, v \leq n$),表示一条无向边连接节点 $u$ 和 $v$。 下一行输入三个整数 $s$、$b$ 和 $k$($1 \leq s, b \leq 10^5$,$0 \leq k \leq 1000$),分别表示飞船数、基地数和依赖关系数。 接下来 $s$ 行,每行四个整数 $x, a, f, p$($1 \leq x \leq n$,$0 \leq a, f, p \leq 10^9$),表示飞船的位置、攻击力、燃料和操作费用。飞船编号为 $1$ 到 $s$。 接下来 $b$ 行,每行三个整数 $x, d, g$($1 \leq x \leq n$,$0 \leq d, g \leq 10^9$),表示基地的位置、防御力和黄金数量。 接下来 $k$ 行,每行两个整数 $s_1$ 和 $s_2$($1 \leq s_1, s_2 \leq s$),表示飞船 $s_1$ 对飞船 $s_2$ 的依赖关系。

输出格式

输出一个整数,表示可以获得的最大总利润。

说明/提示

最优策略是操作第 1、2、4 号飞船,分别攻击第 1、1、2 号基地。 由 ChatGPT 4.1 翻译