【UOJ78】二分圖最大匹配
題面:
給定一個二分圖
求最大匹配
思路:
匈牙利演算法,DFS版本。O(V*E)
#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
const int N = 3e6;
vector<int>G[N];
int po[N], book[N], ans;//po[v]表示點v當前的匹配物件。
int find(int u){
for(int i = 0; i < G[u].size(); i++){
int v = G[u][i];
if(!book[v]){//不在交替路中
book[v] = 1;//放入交替路
if(po[v]==0||find(po[v])){//當前點未用或最終未用,交替路是增廣路。
po[v] = u;//匹配成功
return true;
}
}
}
return false;
}
int main(){
int nl, nr, m;
cin>>nl>>nr>>m;
for(int i = 1; i <= m; i++){
int x, y; cin>>x>>y;
G[y].push_back(x);
}
for(int i = 1; i <= nr; i++){
memset(book,0,sizeof(book));
if(find(i)){
ans++;
}
}
cout<<ans<<"\n";
for(int i = 1; i <= nl; i++)cout<<po[i]<<" ";
return 0;
}
參考資料:
相關文章
- 二分圖最大權完美匹配
- 二分圖最大匹配(匈牙利演算法)演算法
- 二分圖最小點覆蓋等於二分圖最大匹配
- 匈牙利演算法--二分圖的最大匹配演算法
- (最大流,二分圖的多重匹配) Magic Potion
- 二分圖的最大匹配(匈牙利演算法)程式碼演算法
- 《啊哈!演算法》我要做月老 ——二分圖最大匹配演算法
- 二分圖匹配
- 關於二分圖上的最大匹配、最小點覆蓋、最大獨立集以及最大權閉合子圖的聯絡
- POJ - 3041 Asteroids 【二分圖匹配】AST
- 圖論-二分圖匹配匈牙利演算法圖論演算法
- 對匈牙利演算法理解——對二分圖進行最大匹配的演算法演算法
- 詳解匈牙利演算法與二分圖匹配演算法
- Solution - Luogu P10918 小分圖最大匹配
- 求二部圖最大匹配的匈牙利演算法演算法
- 1.2.1 正向最大匹配法
- BZOJ-1305 dance跳舞 建圖+最大流+二分判定
- (二分圖+最大流)洛谷P2774方格取數問題
- 2023北航校賽-E 二分圖最小點覆蓋=n-最大獨立集
- Hetao P1156 最大戰力 題解 [ 綠 ][ 二分 ][ 最大子段和 ]
- POJ 3014:Asteroids(二分匹配,匈牙利演算法)AST演算法
- 二分圖補充
- 二分圖(例題)
- 『筆記』二分圖筆記
- 拆點判定二分圖
- 最大匹配、最小頂點覆蓋、最大獨立集、最小路徑覆蓋(轉)(再轉)
- 關押罪犯(二分答案+染色法判二分圖)
- 圖解--二分查詢樹圖解
- 圖的匹配與網路流
- bzoj3993: [SDOI2015]星際戰爭(二分+最大流)
- bzoj1497 最大獲利(最大權閉合子圖)
- [Python手撕]判斷二分圖Python
- 匈牙利演算法模板(二分圖)演算法
- UVA 11080 - Place the Guards(二分圖判定)
- python sift 特徵匹配 圖片相似度Python特徵
- 最大半連通子圖
- 直方圖中最大矩形直方圖
- ZOJ——Copying Books 最大值最小化問題 (貪心 + 二分)