用途
最小路径覆盖用二分图匹配
算法
首先这里有4个同学和四包零食,其中红色的线代表这个人喜欢这包零食。
一号同学说:“A这包零食是我的了!你们谁也别抢!”
二号同学说:“B这包零食是我的了!”
三号同学说:“2号你一边去,B这包零食是我的!”
由于二号同学很友善,于是他将B这包零食让给三号同学,自己去抢C零食了。
这时,四号同学发现自己喜欢的零食被抢走了,于是他很无奈的叹了一口气。
代码
bool find(int x){
int i;
bz[x]=j;
for(i=head[x];i;i=edge[i].next)
if(!pre[edge[i].to] || bz[pre[edge[i].to]]!=j&&find(pre[edge[i].to])){
pre[edge[i].to]=x;
return 1;
}
return 0;
}
注意:这是数组模拟链表,不是邻接矩阵。