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

 

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

 

【题目大意】

  求最大匹配

 

【题解】

    KM模板

 

【代码】

#include 
#include 
#include 
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;ytmp)slack[y]=tmp;
    }return 0;
}
int KM(){
    memset(linker,-1,sizeof(linker));
    memset(ly,0,sizeof(ly));
    for(int i=0;ilx[i])lx[i]=g[i][j];
    }
    for(int x=0;xslack[i])d=slack[i];
            for(int i=0;i

  

转载于:https://www.cnblogs.com/forever97/p/hdu2255.html

你可能感兴趣的:(HDU 2255 奔小康赚大钱(KM算法))