maximize edges minus vertices in a weighted graph
This problem can be reduced to the Project Selection problem: suppose you have a set $P$ of projects each has an associated revenue $p_i \in \mathbb Z$ and you have dependencies between projects represented by a directed graph $G$ where the vertices are the projects and an edge $(i, j)$ means that project $i$ can only be selected if project $j$ is selected as well. We need to choose a feasible set of projects $A \subseteq P$, where a set is feasible if for every $u \in A$ we have all the out-neighbors of $u$ also in $A$ (note that this induces a subgraph $G'$ of the set of all projects in $A$ as vertices and the edges joining any two vertices in $A$), and the goal is to choose a feasible set of projects to maximize $\sum_{i \in A} p_i$.

Our reduction is as follows: given a directed graph $G=(V, E)$ with weights on the edges $w$ and weights on the nodes $h$, we define a new graph $G'=(V', E')$ as follows: we create a vertex $v_i$ in $V'$ for every node $i \in V$ and assign it cost $p_{v_i} = - h(i)$, then for every edge $e = (i, j)$ in $E$ we create a node $u_e$ in $V'$ with cost $p_{u_e} = w(e)$ and we create two edges $(u_e, v_i)$ and $(u_e, v_j)$ in $E'$ (these indicate that this edge can only be chosen if both vertices are). To prove that this is correct, note that for a given feasible set of projects in this new problem we can immediately find the corresponding subgraph of $G$, $G_A = (V_A, E_A)$ and we see that it maximizes
$$ \sum_{i \in A} p_i = \sum_{e \in E_A} p_{u_e} + \sum_{i \in V_A} p_{v_i} = \sum_{e \in E_A} w(e) - \sum_{i \in V_A} h(i)$$
which is our original goal. The Project Selection problem can be solved by maxflow algorithms, see Kleinberg and Tardos Section 7.11 for the solution (and a more thorough description of the problem). There is code for this here, Problem 1082G which does a similar reduction and solves the corresponding max flow problem.