您的位置:首页 > 其它

二分图最大匹配的非递归方法

2017-09-20 12:52 232 查看
二分图最大匹配的非递归方法

int mat[SIZE][SIZE]; /图矩阵/

int match1[SIZE];

int match2[SIZE];

int queue[SIZE];

int head,tail;

int pre[SIZE];

int maxMatch(int N){

int ret = 0;

memset(match1,-1,sizeof(match1));

memset(match2,-1,sizeof(match2));

for(int i=0;i<N;i++){
memset(pre,-1,sizeof(pre));
head = tail = 0;
queue[tail++] = i;
while(head < tail && match1[i]==-1){
int u = queue[head++];
for(int j =0;j<N&&match1[i]==-1;j++)
if(mat[u][j] && pre[j]==-1){
queue[tail++] = match2[j];
pre[j]=u;
if(queue[tail-1]<0){
for(int t=j,k=0;t>=0;j=t){
match2[j]=k=pre[j];
t=match1[k];
match1[k]=j;
}
}
}
}
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: