月老的難題&&二分圖最大匹配模板&&http://acm.nyist.net/JudgeOnline/problem.php?pid=239
二分圖最大匹配:用鄰接矩陣超時,需要用鄰接表;
#include<cstdio>
#include<algorithm>
#include<string.h>
#include<stdlib.h>
#include<iostream>
#include<vector>
using namespace std;
const int N=512;
bool chk[N];
vector<int>vis[N];
int n;
int xM[N],yM[N];
bool SearchPath(int u)
{
int dd=vis[u].size(),yy;
for(int v=0;v<dd;v++)
{yy=vis[u][v];
if(!chk[yy])
{
chk[yy] = true;
if(yM[yy] == -1 || SearchPath(yM[yy]))
{
yM[yy]=u;
xM[u]=yy;
return true;
}
}
}
return false;
}
int MaxMatch()
{
int ret=0;
memset(xM,-1,sizeof(xM));
memset(yM,-1,sizeof(yM));
for(int u=1;u<=n;u++)
{
if(xM[u]==-1)
{
memset(chk,false,sizeof(chk));
if(SearchPath(u))
ret++;
}
}
return ret;
}
int main()
{
int t,k,u,v;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&k);
memset(chk,false,sizeof(chk));
for(int i=0;i<N;i++)
vis[i].clear();
//memset(vis,false,sizeof(vis));
for(int i=1;i<=k;i++)
{
scanf("%d%d",&u,&v);
vis[u].push_back(v);
//vis[v].push_back(u);
}
printf("%d\n",MaxMatch());
}
return 0;
}
相關文章
- 《啊哈!演算法》我要做月老 ——二分圖最大匹配演算法
- 二分圖最大權完美匹配
- 【UOJ78】二分圖最大匹配
- (最大流,二分圖的多重匹配) Magic Potion
- 匈牙利演算法--二分圖的最大匹配演算法
- 二分圖最大匹配(匈牙利演算法)演算法
- 二分圖最小點覆蓋等於二分圖最大匹配
- 二分圖的最大匹配(匈牙利演算法)程式碼演算法
- 二分圖匹配
- 關於二分圖上的最大匹配、最小點覆蓋、最大獨立集以及最大權閉合子圖的聯絡
- POJ - 3041 Asteroids 【二分圖匹配】AST
- 對匈牙利演算法理解——對二分圖進行最大匹配的演算法演算法
- 圖論-二分圖匹配匈牙利演算法圖論演算法
- 軟體工程的最大難題軟體工程
- 匈牙利演算法模板(二分圖)演算法
- 模板匹配
- 二分查詢基礎專題——二分模板
- leetcode解題模板 —— 二分查詢LeetCode
- 239. 滑動視窗最大值
- 求二部圖最大匹配的匈牙利演算法演算法
- 模板匹配(matlab)Matlab
- 詳解匈牙利演算法與二分圖匹配演算法
- Solution - Luogu P10918 小分圖最大匹配
- 二分圖(例題)
- LeetCode 239. 滑動視窗最大值LeetCode
- (二分圖+最大流)洛谷P2774方格取數問題
- 卡圖難題
- [20220105]sqlplus &1替換最大支援239個字元.txtSQL字元
- BZOJ 3698 XWW的難題:有上下界的最大流
- XLD建立形狀匹配的模板
- leetcode410分割陣列的最大值(二分+貪心,困難)LeetCode陣列
- Hetao P1156 最大戰力 題解 [ 綠 ][ 二分 ][ 最大子段和 ]
- 1.2.1 正向最大匹配法
- BZOJ-1305 dance跳舞 建圖+最大流+二分判定
- meiqua / shape_based_matching---模板匹配速度過慢問題
- 模板 - 二分&三分
- python二分查詢模板Python
- 利用MKL實現OpenCV的模板匹配(matchTemplate)OpenCV
- 解決DDD最大難題-如何劃分領域