HDU3488 Tour 二分图最大权匹配

这道题我乍一看就懵了。。。我好菜啊啊啊55555...后来看了题解发现还是比较裸的二分图最大权匹配。。附上大佬博客Orz:https://www.cnblogs.com/Lyush/archive/2013/04/16/3025145.html

怎么就没想到“拆点”呢。。之前一直都能想到,,怎么这题就懵了呢QAQ...

注意求的是最小值,所以权值、结果都取相反数。

附上AC代码:

#include
#include
#include
#include
#include
using namespace std;
const int INF=0x3f3f3f3f;

const int N=210;
int nx,ny;
int g[N][N];
int link[N],lx[N],ly[N];
int slack[N];
bool visx[N],visy[N];

bool dfs(int x)
{
    visx[x]=true;
    for(int y=0;ytmp)
            slack[y]=tmp;
    }
    return false;
}
int KM()
{
    memset(link,-1,sizeof(link));
    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

 

你可能感兴趣的:(算法-网络流,匹配问题)