• HDU 2255 奔小康赚大钱(KM算法)


    【题目链接】 http://acm.hdu.edu.cn/showproblem.php?pid=2255

    【题目大意】

      求最大匹配

    【题解】

        KM模板

    【代码】

    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    const int N=310,INF=0x3f3f3f3f;
    int nx,ny; //两边的点数 
    int g[N][N];  //二分图描述
    int linker[N],lx[N],ly[N];//y中各点匹配状态,x,y中的点标号
    int n,slack[N];
    bool visx[N],visy[N];
    bool DFS(int x){
        visx[x]=1;
        for(int y=0;y<ny;y++){
            if(visy[y])continue;
            int tmp=lx[x]+ly[y]-g[x][y];
            if(tmp==0){
                visy[y]=true;
                if(linker[y]==-1||DFS(linker[y])){
                    linker[y]=x;
                    return 1;
                }
            }else if(slack[y]>tmp)slack[y]=tmp;
        }return 0;
    }
    int KM(){
        memset(linker,-1,sizeof(linker));
        memset(ly,0,sizeof(ly));
        for(int i=0;i<nx;i++){
            lx[i]=-INF;
            for(int j=0;j<ny;j++)if(g[i][j]>lx[i])lx[i]=g[i][j];
        }
        for(int x=0;x<nx;x++){
            for(int i=0;i<ny;i++)slack[i]=INF;
            for(;;){
                memset(visx,false,sizeof(visx));
                memset(visy,false,sizeof(visy));
                if(DFS(x))break;
                int d=INF;
                for(int i=0;i<ny;i++)if(!visy[i]&&d>slack[i])d=slack[i];
                for(int i=0;i<nx;i++)if(visx[i])lx[i]-=d;
                for(int i=0;i<ny;i++){
                    if(visy[i])ly[i]+=d;
                    else slack[i]-=d;
                }
            }
        }int res=0;
        for(int i=0;i<ny;i++)if(linker[i]!=-1)res+=g[linker[i]][i];
        return res;
    }
    int main(){
        while(~scanf("%d",&n)){
            for(int i=0;i<n;i++)for(int j=0;j<n;j++)scanf("%d",&g[i][j]);
            nx=ny=n;
            printf("%d
    ",KM());
        }return 0;
    }
    

      

  • 相关阅读:
    struts2 constant详解
    大图片上传(ImageIO,注意有的图片不能上传时因为他是tiff格式)
    Spring提供的iBatis的SqlMap配置
    2013-7-31hibernate二级缓存
    2013-7-30。。。。难得闲
    POI导出大量数据的简单解决方案
    Tomcat优化详细2
    Tomcat优化详细1
    Tomcat优化方案
    java链表实现
  • 原文地址:https://www.cnblogs.com/forever97/p/hdu2255.html
Copyright © 2020-2023  润新知