啦啦啦,自从看了这位神犇的博客,再也不用怕匈牙利算法!!!华丽丽的传送门:神犇的博客。
下面贴一个自己写的匈牙利算法的模板吧。
bool find(int x){
for(int i=1;i<=N;i++)
if(link[x][i]&&!vis[i]){
vis[i]=1;
if(!belong[i]||find(belong[i])){
belong[i]=x;
return true;
}
}
return false;
}
void work(){
int ans=0;
for(int i=1;i<=N;i++){
memset(vis,0,sizeof(vis));
if(find(i))ans++;
}
}
本文介绍了一种解决分配问题的有效算法——匈牙利算法,并提供了一个简洁易懂的实现模板。该算法通过寻找增广路径来不断改进当前的匹配状态,直至达到最大匹配。
11万+

被折叠的 条评论
为什么被折叠?



