#include<iostream>
using namespace std;
#define N 202
int useif[N];//记录y中结点是否使用过
int link[N];//记录当前与y连接的x的节点值
int mat[N][N];//记录连接x和y的边,如果i和j之间是否有边相连有为1,否则为o
int gl,gr;
int can(int t)/*判断找增广路径*/
{
int i;
for(i=1;i<=gr;i++)
{
if(useif[i]==0&&mat[t][i])
{
useif[i]=1;
if(link[i]==-1||can(link[i]))//递归如果该y点为连接则返回,否则递归y连接的那个顶点,一直找到一个y没有用过且没有连接
{
link[i]=t;
return 1;
}
}
}
return 0;//没找到
}
int MaxMatch()
{
int i,num=0;
memset(link,0xff,sizeof(link));//初始化连接边
for( i=1;i<=gl;i++)
{
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载