二分圖-最大匹配

  • 匈牙利算法
    struct edge{int u,v;edge *next;}*head[N],e[N];
    void add(int u,int v){
    edge *p=&e[cnt++];
    p->u=u;p->v=v;p->next=head[u];head[u]=p;
    }
    bool dfs(int u){
    for(edge *p=head[u];p;p=p->next){
        if(!vis[p->v]){
            vis[p->v]=1;
            if(!y[p->v]||dfs(y[p->v])){// 如果u->v 可以連標記 或者回溯到y[v]連的連其他的路
                x[u]=p->v;y[p->v]=u;//找增廣路
                return true;
            }
        }
    }return false;
    }
    最大匹配=最小點集
    最大獨立集=最小邊集=|V|-最大匹配
  • 發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章