将匈牙利改成这样:
bool dfs(ll x){ for(auto y:e[x]) if(!vis[y]&&!match[y]){vis[y]=1;match[y]=x;return 1;} for(auto y:e[x]) if(!vis[y]){ vis[y]=1; if(dfs(match[y])){match[y]=x;return 1;} } return 0; }
常数变小了很多,4000+4000+4000+ms -> 124124124ms。