二分图最大匹配,点的最小覆盖,最小路径覆盖

vector<int>vec[N];
bool vis[N];
int n,k;
int next[N+10];

bool find(int t)
{
	rep(i,vec[t].size())
	{
		int m=vec[t][i];
		if(vis[m]==false)
		{
			vis[m]=true;
			if(next[m]==-1 || find(next[m]))
			{
				next[m]=t;
				return true;
			}
		}
	}
	return false;
}

int sum()
{
	memset(next,-1,sizeof(next));
	int m=0;
	repf(i,1,n)
	{
		memset(vis,false,sizeof(vis));
		if(find(i))
			m++;
	}
	return m;
}
int main()
{ 
	//加边
	int m=sum();
   return 0;
}

你可能感兴趣的:(二分图最大匹配,点的最小覆盖,最小路径覆盖)