二分图匹配模板
bool DFS(int x){ for (vector<int>::iterator it=G[x].begin();it!=G[x].end();it++){ if(vis[*it]) continue; vis[*it]=true; if (!to[*it]||DFS(to[*it])){ to[*it]=x; return true; } } return false; } int solve(){ int ans=0; for (int i=1;i<=n;i++){ memset(vis,0,sizeof(vis)); if (DFS(i)) ans++; } return ans; }