1. 程式人生 > 實用技巧 >pywinauto客戶端自動化---模擬鍵盤操作

pywinauto客戶端自動化---模擬鍵盤操作

二分圖概念

二分圖:

二分圖又稱作二部圖,是圖論中的一種特殊模型。 設G=(V,E)是一個無向圖,如果頂點V可分割為兩個互不相交的子集(A,B),並且圖中的每條邊(i,j)所關聯的兩個頂點i和j分別屬於這兩個不同的頂點集(i in A,j in B),則稱圖G為一個二分圖。

簡單的說,一個圖被分成了兩部分,相同的部分沒有邊,那這個圖就是二分圖,二分圖是特殊的圖。

最大二分圖匹配

最常用的是匈牙利演算法,實際上是一種貪心的策略,儘量使每一個點存在匹配。

模板題

程式碼


const int maxn=1005;
int n,m,t;
int mch[maxn],vis[maxn];
vector<int >g[maxn];
bool dfs(int u,int tag)
{
	if(vis[u]==tag)return false;//應該是避免繞圈 
	vis[u]=tag;
	for(int i=0;i<g[u].size();i++)
	{
		int v=g[u][i];
		if(mch[v]==0||dfs(mch[v],tag))//如果這個點未被匹配或者原先匹配的點可以找到別的匹配點 
		{
			mch[v]=u;
			return true;
		}
	}
	return false;
}
main(void)
{
	n=read();
	m=read();
	t=read();
	while(t--)
	{
		int u=read();
		int v=read();
		g[u].push_back(v);
	} 
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		if(dfs(i,i))
		{
			ans++;
		}
	}
	cout<<ans;
}

二分圖最優匹配與km演算法

詳解

例題