二分图匹配模板

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;
}

 

posted @ 2018-11-07 07:56  QingCai_DCF  阅读(76)  评论(0编辑  收藏  举报