HDU 2063 匈牙利演算法二分圖的最大匹配
http://acm.hdu.edu.cn/showproblem.php?pid=2063
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
int linkk[844],use[844];
int mp[844][844];
int n,m,k;
int b[844];
bool dfs(int x)
{
for(int i=1;i<=m;i++)
{
if(use[i]==0&&mp[x][i])
{
use[i]=1;
if(linkk[i]==-1||dfs(linkk[i]))
{
linkk[i]=x;
return true;
}
}
}
return false;
}
int hungary()
{
int num=0;
for(int i=1;i<=n;i++)
{
memset(use,0,sizeof(use));
if(dfs(i))
num++;
}
return num;
}
int main()
{
while(~scanf("%d",&k))
{
if(k==0)
break;
scanf("%d%d",&n,&m);
memset(mp,0,sizeof(mp));
for(int i=0;i<k;i++)
{
int u,v;
scanf("%d%d",&u,&v);
mp[u][v]=1;
}
memset(linkk,-1,sizeof(linkk));
printf("%d\n",hungary());
}
return 0;
}
利用vector容器:
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#define MAX 1002
using namespace std;
int n,m,k;
int mat[MAX];
bool used[MAX];
vector< int > G[MAX];
bool crosspath(int k)
{
for (int i=0;i<G[k].size();i++)
{
int j=G[k][i];
if (!used[j])
{
used[j]=true;
if (mat[j]==-1 || crosspath(mat[j]))
{
mat[j]=k;
return true;
}
}
}
return false;
}
int hungary()
{
int match=0;
memset(mat,-1,sizeof(mat));
for (int i=1;i<=n;i++)
{
memset(used,0,sizeof(used));
if (crosspath(i))
match++;
}
return match;
}
int main()
{
while(~scanf("%d",&k))
{
if(k==0)break;
scanf("%d%d",&n,&m);
for(int i=0;i<=n;i++)
G[i].clear();
for(int i=0;i<k;i++)
{
int u,v;
scanf("%d%d",&u,&v);
G[u].push_back(v);
}
printf("%d\n",hungary());
}
return 0;
}
相關文章
- 二分圖最大匹配(匈牙利演算法)演算法
- 匈牙利演算法--二分圖的最大匹配演算法
- hdu5090 匈牙利演算法二分圖最大匹配問題演算法
- 二分圖的最大匹配的匈牙利演算法演算法
- 二分圖的最大匹配、完美匹配和匈牙利演算法演算法
- 二分圖的最大匹配(匈牙利演算法)程式碼演算法
- 二分圖最大匹配問題匈牙利演算法演算法
- 圖論-二分圖匹配匈牙利演算法圖論演算法
- HDU 2063 雲霄飛車(匈牙利演算法)演算法
- 對匈牙利演算法理解——對二分圖進行最大匹配的演算法演算法
- 演算法學習之路|二分圖的最大匹配—匈牙利演算法(Dfs實現)演算法
- 詳解匈牙利演算法與二分圖匹配演算法
- 求二部圖最大匹配的匈牙利演算法演算法
- POJ 1325-Machine Schedule(二分圖匹配-匈牙利演算法)Mac演算法
- POJ 1469-COURSES(二分圖匹配入門-匈牙利演算法)演算法
- 匈牙利演算法模板(二分圖)演算法
- hdu2255 二分圖的最佳匹配 KM演算法演算法
- 《啊哈!演算法》我要做月老 ——二分圖最大匹配演算法
- 二分圖最大權完美匹配
- 二分圖最小點覆蓋等於二分圖最大匹配
- POJ 3014:Asteroids(二分匹配,匈牙利演算法)AST演算法
- KM演算法——二分圖的最佳匹配演算法
- BZOJ 1191 [HNOI2006]超級英雄Hero:二分圖匹配 匈牙利演算法演算法
- 二分圖匹配
- 目標匹配:匈牙利演算法的python實現演算法Python
- poj2400 KM演算法二分圖的完美匹配演算法
- 關於二分圖上的最大匹配、最小點覆蓋、最大獨立集以及最大權閉合子圖的聯絡
- HDU 2255-奔小康賺大錢(Kuhn-Munkras演算法/KM演算法-完備匹配下的最大權匹配)演算法
- hdu2063雲霄飛車
- hihocoder 1158 質數相關(二分圖匹配 最大獨立集)
- Uva11383 二分圖的完美匹配(深入理解KM演算法)演算法
- 匈牙利演算法演算法
- POJ - 3041 Asteroids 【二分圖匹配】AST
- NLP之逆向最大匹配演算法(BMM)演算法
- POJ 3041-Asteroids(二分圖匹配)AST
- 2014上海網路賽1004||hdu5045 二分圖的最佳匹配 或 狀態壓縮dp
- hdu4751Divide Groups【判斷二分圖】IDE
- 洛谷P7368 [USACO05NOV] Asteroids G 題解 二分圖最小點覆蓋 匈牙利演算法AST演算法