二分图

Posted littlerita

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分图相关的知识,希望对你有一定的参考价值。

过山车

 HDU - 2063 

分析匈牙利算法,其实就是找得到就匹配,找不到这个点换一下看看能不能匹配;

技术图片
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
const int N=6e2+5;
vector<int>e[N];
int match[N];
bool vis[N];
bool findpath(int u){
    for(int i=0;i<e[u].size();i++){
    int v=e[u][i];
    if(!vis[v]){
    vis[v]=1;
    if(!match[v]||findpath(match[v])){
    match[v]=u;
    return 1;
    }
    }
    }
    return 0;
}   
int main(){
    int k,m,n;
    while(~scanf("%d",&k),k){
    scanf("%d %d",&m,&n);
    for(int i=0;i<=N;i++)match[i]=0,e[i].clear();
    // girl.clear();
    for(int i=1,u,v;i<=k;i++){
    scanf("%d %d",&u,&v);e[u].pb(v);
    // girl.pb(u);
    }
    int ans=0;
    for(int i=1;i<=m;i++){
    memset(vis,0,sizeof vis);
    if(findpath(i))ans++;        
    }
    // cout<<"test"<<endl;
    printf("%d
",ans);

    }
    // system("pause");
    return 0;
}
View Code

 

以上是关于二分图的主要内容,如果未能解决你的问题,请参考以下文章

如何将 r ggplot 图存储为 html 代码片段

二分图

模板判断二分图

二分图匹配(模板)

HDU 2236 无题II(二分图匹配+二分)

二分图——匈牙利算法简述