$dfs$
搜索每个数可以和其他哪一个数匹配删掉
class Solution {
public:
vector<int>cnt;
int res;
int path;
int minTransfers(vector<vector<int>>& d) {
unordered_map<int,int>hash;
int path=0;
res=INT_MAX;
for(auto t:d)
{
hash[t[0]]-=t[2];
hash[t[1]]+=t[2];
}
for(auto [k,v]:hash)
{
if(v!=0)
cnt.push_back(v);
}
dfs(0);
return res;
}
void dfs(int u)
{
while(u<cnt.size() && cnt[u]==0) u++;
if(u>=cnt.size())
{
res=min(res,path);
return;
}
for(int i=u+1;i<cnt.size();i++)
{
if(cnt[u]*cnt[i]<0)
{
cnt[i]+=cnt[u];
path++;
dfs(u+1);
cnt[i]-=cnt[u];
path--;
}
}
}
};