匈牙利算法

来源:互联网 发布:郑州中学编程培训班 编辑:程序博客网 时间:2024/05/16 18:54



int nx,ny;int map[maxn][maxn];  int cx[maxn],cy[maxn];  bool vis[maxn];int findpath( int u )  {  for( int i = 1; i <= ny; i++ )  {  if( map[u][i] && !vis[i] )  {  vis[i] = 1;  if( cy[i] == -1 || findpath( cy[i] ) )  {  cy[i] = u;  cx[u] = i;  return true;  }  }  }  return false;  }  int MaxMatch()  {  int ans = 0;  memset(cx,-1,sizeof(cx));  memset(cy,-1,sizeof(cy));  for( int i = 1; i <= nx; i ++ )  {  if( cx[i] == -1 )  {  memset(vis,0,sizeof(vis));    ans += findpath(i);  }  }  return ans;  }  


0 0
原创粉丝点击