程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> poj 3692 二分圖最大匹配

poj 3692 二分圖最大匹配

編輯:C++入門知識

poj 3692 二分圖最大匹配


poj 3692 二分圖最大匹配
題意:
已知班級有g個女孩和b個男孩,所有女生之間都相互認識,所有男生之間也相互認識,給出m對關系表示哪個女孩與哪個男孩認識。現在要選擇一些學生來組成一個團,使得裡面所有人都互相認識,求此團最大人數。

限制:
1 <= g,b <= 200; 0 <= m <= b*g

思路:
求最大團。
最大獨立集=|V|-最大匹配
最大團=補圖的最大獨立集


由題意可得,互相不認識的連邊,構成一個二分圖,ans=|V|-最大匹配,匈牙利算法。

/*poj 3692
  題意:
  已知班級有g個女孩和b個男孩,所有女生之間都相互認識,所有男生之間也相互認識,給出m對關系表示哪個女孩與哪個男孩認識。現在要選擇一些學生來組成一個團,使得裡面所有人都認識,求此團最大人數。
  限制:
  1 <= g,b <= 200; 0 <= m <= b*g
  思路:
  求最大團。
  最大獨立集=|V|-最大匹配
  最大團=補圖的最大獨立集

  由題意可得,互相不認識的連邊,構成一個二分圖,ans=|V|-最大匹配,匈牙利算法。
 */
#include
#include
#include
#include
using namespace std;
#define PB push_back
const int MAX_V=1005;
int V;
vector G[MAX_V];
int match[MAX_V];
bool used[MAX_V];
void add_edge(int u,int v){
	G[u].PB(v);
	G[v].PB(u);
}
bool dfs(int v){
	used[v]=true;
	for(int i=0;i


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved