classSolution {public: /* * @param edges: a directed graph where each edge is represented by a tuple * @return: the number of edges */intdfs(vector<int> &debt,int cur,int count) {constint N =debt.size();while (cur < N &&debt[cur] ==0) ++cur;if (cur == N) return count; int res = N;for (int i = cur +1; i < N; ++i) {if ((i > cur +1&&debt[i] ==debt[i -1]) || (debt[i] *debt[cur] >0)) continue;debt[i] +=debt[cur]; res =min(res,dfs(debt, cur +1, count +1));debt[i] -=debt[cur]; }return res; }intbalanceGraph(vector<vector<int>> &edges) { unordered_map<int,int> m;for (constauto&e : edges) {m[e[0]] -=e[2];m[e[1]] +=e[2]; } vector<int> debt;for (constauto&p : m) {if (p.second !=0) debt.push_back(p.second); }sort(debt.begin(),debt.end());returndfs(debt,0,0); }};