We consider a heterogeneous network with mobile edge computing, where a user can offload its computation to one among multiple servers. In particular, we minimize the system-wide computation overhead by jointly optimizing the individual computation decisions, transmit power of the users, and computation resource at the servers. The crux of the problem lies in the combinatorial nature of multi-user offloading decisions, the complexity of the optimization objective, and the existence of inter-cell interference. Then, we decompose the underlying problem into two subproblems: i) the offloading decision, which includes two phases of user association and subchannel assignment, and ii) joint resource allocation, which can be further decomposed into the problems of transmit power and computation resource allocation. To enable distributed computation offloading, we sequentially apply a many-to-one matching game for user association and a one-to-one matching game for subchannel assignment. Moreover, the transmit power of offloading users is found using a bisection method with approximate inter-cell interference, and the computation resources allocated to offloading users is achieved via the duality approach. The proposed algorithm is shown to converge and is stable. Finally, we provide simulations to validate the performance of the proposed algorithm as well as comparisons with the existing frameworks.