Loading docs/graph/bi-graph.md +43 −42 Original line number Diff line number Diff line Loading @@ -43,13 +43,13 @@ 算法步骤大致如下: 1.首先从任意一个未配对的点$u$开始,选择他的任意一条边($u$-$v$),如此时$v$还未配对,则配对成功,配对数加一,若$v$已经配对,则尝试寻找$v$的配对的另一个配对(该步骤可能会被递归的被执行多次),若该尝试成功,则配对成功,配对数加一。 1\. 首先从任意一个未配对的点 $u$ 开始,选择他的任意一条边( $u$ - $v$ ),如此时 $v$ 还未配对,则配对成功,配对数加一,若 $v$ 已经配对,则尝试寻找 $v$ 的配对的另一个配对(该步骤可能会被递归的被执行多次),若该尝试成功,则配对成功,配对数加一。 2.若果上一步配对不成功,那么选择重新选择一条未被选择过的边,重复上一步。 2\. 若果上一步配对不成功,那么选择重新选择一条未被选择过的边,重复上一步。 3.对剩下每一个没有被配对的点执行步骤1,直到所有的点都尝试完毕。 3\. 对剩下每一个没有被配对的点执行步骤 1,直到所有的点都尝试完毕。 用下面的二分图为例: 用下面的二分图为例:  Loading Loading @@ -87,7 +87,8 @@ bool dfs(int u){ int v = G[u][i]; if (vis[v]) continue; vis[v] = 1; if(!match[v] || dfs(match[v])){ //如果v没有匹配,或者v的匹配找到了新的匹配 if (!match[v] || dfs(match[v])) { //如果v没有匹配,或者v的匹配找到了新的匹配 match[v] = u; match[u] = v; //更新匹配信息 return 1; Loading Loading
docs/graph/bi-graph.md +43 −42 Original line number Diff line number Diff line Loading @@ -43,13 +43,13 @@ 算法步骤大致如下: 1.首先从任意一个未配对的点$u$开始,选择他的任意一条边($u$-$v$),如此时$v$还未配对,则配对成功,配对数加一,若$v$已经配对,则尝试寻找$v$的配对的另一个配对(该步骤可能会被递归的被执行多次),若该尝试成功,则配对成功,配对数加一。 1\. 首先从任意一个未配对的点 $u$ 开始,选择他的任意一条边( $u$ - $v$ ),如此时 $v$ 还未配对,则配对成功,配对数加一,若 $v$ 已经配对,则尝试寻找 $v$ 的配对的另一个配对(该步骤可能会被递归的被执行多次),若该尝试成功,则配对成功,配对数加一。 2.若果上一步配对不成功,那么选择重新选择一条未被选择过的边,重复上一步。 2\. 若果上一步配对不成功,那么选择重新选择一条未被选择过的边,重复上一步。 3.对剩下每一个没有被配对的点执行步骤1,直到所有的点都尝试完毕。 3\. 对剩下每一个没有被配对的点执行步骤 1,直到所有的点都尝试完毕。 用下面的二分图为例: 用下面的二分图为例:  Loading Loading @@ -87,7 +87,8 @@ bool dfs(int u){ int v = G[u][i]; if (vis[v]) continue; vis[v] = 1; if(!match[v] || dfs(match[v])){ //如果v没有匹配,或者v的匹配找到了新的匹配 if (!match[v] || dfs(match[v])) { //如果v没有匹配,或者v的匹配找到了新的匹配 match[v] = u; match[u] = v; //更新匹配信息 return 1; Loading