1. 程式人生 > >模板_matlab 匈牙利演算法(最大匹配數/最小覆蓋點)

模板_matlab 匈牙利演算法(最大匹配數/最小覆蓋點)

int map[505][505]; 
int v2_link[10005];
int v2_used[10005];
int res,v1,v2;
bool dfs(int x)
{
	for(int y = 1;y <= v2;y ++)
	{
		if(map[x][y] && !v2_vis[y])
		{
			v2_vis[y]=1;
			if(v2_link[y]==0 || dfs(v2_link[y]))
			{
				v2_link[y]=x;
				return true;
			}
		}
	}
	return false;
}

void matlab()
{
	for(int x = 1;x <= v1;x ++)
	{
		memset(v2_vis,0,sizeof(v2_vis));
		if(dfs(x))
		    res++; 
	}
}