How can I prove the following problem is NP complete?
I think there is an easy reduction from Knapsack.

Knapsack:

Input: a list of couples (value, weight) $\{(v_1, w_1), …, (v_n,w_n)\}$, a maximum weight $W$, a target value $V$
Question: is there a subset $S \subset [\![1, n]\!]$ such that $\sum\limits_{i\in S} v_i \geq V$ and $\sum\limits_{i\in S} w_i \leq W$


Now given an input of knapsack, let's construct an input of your problem: add a $n+1$-th element, and consider:

$\forall (i, j) \in [\![1, n]\!]$ with $i\neq j$, we set $c\{i, j\} = \infty$  and $c\{i, n+1\} = w_i$
$\forall (i, j) \in [\![1, n]\!]$ with $i\neq j$, we set $g\{i, j\} = 0$  and $g\{i, n+1\} = v_i$
set $b = W$ and $p = V$

Then this instance has a solution of your problem if and only if the input of knapsack has a solution. Since knapsack is $NP$-complete, this proves the $NP$-hardness of your problem.