POJ 1274 The Perfect Stall(匈牙利算法模板)
2017-08-17 16:17
495 查看
题目地址
题意:有n个奶牛和m个谷仓,现在每个奶牛有自己喜欢去的谷仓,并且它们只会去自己喜欢的谷仓吃东西,问最多有多少奶牛能够吃到东西(谷仓里有奶牛的话其他奶牛就不会去了)
思路:直接用最大匹配的模板
题意:有n个奶牛和m个谷仓,现在每个奶牛有自己喜欢去的谷仓,并且它们只会去自己喜欢的谷仓吃东西,问最多有多少奶牛能够吃到东西(谷仓里有奶牛的话其他奶牛就不会去了)
思路:直接用最大匹配的模板
#include <iostream> #include <cstring> #include <string> #include <queue> #include <vector> #include <map> #include <set> #include <stack> #include <cmath> #include <cstdio> #include <algorithm> #define N 1010 #define LL __int64 #define inf 0x3f3f3f3f #define lson l,mid,ans<<1 #define rson mid+1,r,ans<<1|1 #define getMid (l+r)>>1 #define movel ans<<1 #define mover ans<<1|1 using namespace std; const LL mod = 1e9 + 7; int n, m; struct Hungarian { vector<int> mapp ; bool vis ;//是否为匹配点 int mark ;//该边与哪个点构成的边为匹配边 void init() { for (int i = 0; i <= n + m + 20; i++) { mapp[i].clear(); } memset(mark, -1, sizeof(mark)); } void add(int a, int b) { mapp[a].push_back(b); mapp[b].push_back(a); } bool dfs(int u) { for (int i = 0; i < mapp[u].size(); i++) { int v = mapp[u][i]; if (!vis[v]) { vis[v] = true; if (mark[v] == -1 || dfs(mark[v])) { mark[u] = v; mark[v] = u; return true; } } } return false; } int solve() { int sum = 0; for (int i = 1; i <= n; i++) {//枚举非匹配点 if (mark[i] == -1) { memset(vis, false, sizeof(vis)); if (dfs(i)) { sum++;//最大匹配的个数 } } } return sum; } }hungarian; int main() { int a, b; cin.sync_with_stdio(false); while (cin >> n >> m) { hungarian.init(); for (int i = 1; i <= n; i++) { cin >> a; for (int j = 0; j < a; j++) { cin >> b; b = b + n + 10; hungarian.add(i, b); } } cout << hungarian.solve() << endl; } return 0; }
相关文章推荐
- POJ 1274 The Perfect Stall (匈牙利算法模板)
- poj 1274 The Perfect Stall【匈牙利算法模板题】
- poj 1274 The Perfect Stall(匈牙利算法模板)
- poj1274——The Perfect Stall(匈牙利算法)
- POJ1274:The Perfect Stall(二分图最大匹配 匈牙利算法)
- POJ1274:The Perfect Stall(二分图最大匹配 匈牙利算法)
- POJ 1274 The Perfect Stall (二分图最大匹配入门题,匈牙利算法)
- Poj-1274-The Perfect Stall-匈牙利算法
- poj 1274 The Perfect Stall(匈牙利算法)
- [算法] poj 1274 The Perfect Stall (匈牙利)
- POJ 1274 The Perfect Stall (匈牙利算法)
- POJ1274 The Perfect Stall [二分图最大匹配 匈牙利算法]
- [算法] poj 1274 The Perfect Stall (匈牙利)
- POJ 1274 The Perfect Stall(二分图匹配/匈牙利算法)
- Poj-1274-The Perfect Stall-匈牙利算法
- 【poj 1274 】The Perfect Stall (二分图匹配,匈牙利算法)
- POJ 1274 The Perfect Stall ( 匈牙利算法 )
- poj 1274 The Perfect Stall 【二分匹配裸题】【练模板】
- POJ-1274-The Perfect Stall【二分图最大匹配】【模板题】
- Pku acm 1274 The Perfect Stall 数据结构题目解题报告(十三)---- 匈牙利算法求二分图的最大匹配