POJ 1274 The Perfect Stall【二分图最大匹配】

题意:二分图最大匹配

分析:二分图最大匹配

代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <vector>
 5 using namespace std;
 6
 7 const int maxn = 205;
 8 int n;
 9
10 int Link[maxn];
11 int vis[maxn];
12 vector<int> G[maxn];
13 bool Find(int u) {
14     for(int i = 0; i < G[u].size(); i++) {
15         int v = G[u][i];
16         if(!vis[v]) {
17             vis[v] = 1;
18             if(Link[v] == -1 || Find(Link[v])) {
19                 Link[v] = u;
20                 return true;
21             }
22         }
23     }
24     return false;
25 }
26
27 int solve() {
28     int cnt = 0;
29     memset(Link, -1, sizeof(Link));
30     for(int i = 1; i <= n; i++) {
31         if(G[i].size()) {
32             memset(vis, 0, sizeof(vis));
33             if(Find(i)) cnt++;
34         }
35     }
36     return cnt;
37 }
38
39 int main() {
40     int m;
41     int num,_num;
42     while(EOF != scanf("%d %d",&n, &m)) {
43         for(int i = 1; i <= n; i++) {
44             G[i].clear();
45             scanf("%d",&num);
46             for(int j = 0; j < num; j++) {
47                 scanf("%d",&_num);
48                 G[i].push_back(_num);
49             }
50         }
51         printf("%d\n",solve());
52     }
53     return 0;
54 }

POJ 1274 The Perfect Stall【二分图最大匹配】

时间: 2024-10-12 03:02:15

POJ 1274 The Perfect Stall【二分图最大匹配】的相关文章

POJ - 1274 The Perfect Stall 二分图 最大匹配

题目大意:有n头牛,m个牛舍,每个牛舍只能装一头牛.给出每头牛可在的牛舍序号,问最多能有多少头牛能分配到牛舍 解题思路:二分图求最大匹配,牛和牛舍分成两个点集进行匹配 #include<cstdio> #include<vector> #include<cstring> using namespace std; const int N = 210; vector<int> cow[N]; int vis[N], link[N]; int n, m; void

poj 1274 The Perfect Stall 解题报告

题目链接:http://poj.org/problem?id=1274 题目意思:有 n 头牛,m个stall,每头牛有它钟爱的一些stall,也就是几头牛有可能会钟爱同一个stall,问牛与 stall 最大匹配数是多少. 二分图匹配,匈牙利算法入门题,留个纪念吧. 书上看到的一些比较有用的知识: 增广:通俗地说,设当前二分图中,已有 x 个匹配边(代码中match[i] 不为0的个数有x个),现在对 i 点(也就是代码中dfs中的参数 x) 指定一个匹配点 j, 由于 j 可能有匹配点设为

poj 1274 The Perfect Stall (二分匹配)

The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17768   Accepted: 8104 Description Farmer John completed his new barn just last week, complete with all the latest milking technology. Unfortunately, due to engineering pr

POJ 1274 The Perfect Stall 水二分匹配

题目链接:点击打开链接 嘿嘿 #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<vector> #include<queue> #include<functional> #define N 2011 using namespace std; int lef[N], pn;//lef[v]表示Y集的点v 当前连接

POJ 1274 The Perfect Stall (网络流-最大流)

The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18308   Accepted: 8328 Description Farmer John completed his new barn just last week, complete with all the latest milking technology. Unfortunately, due to engineering pr

POJ 1274 The Perfect Stall(二分图最大匹配)

题意: N头牛M个牛棚,每只牛都有它自己指定的若干个它愿意呆的牛棚. 每个牛棚最多呆一头牛. 问最多可以满足多少头牛的愿望. 思路: 裸二分图最大匹配. 代码: int n,m; vector<int> graph[205]; int cx[205],cy[205]; bool bmask[205]; int findPath(int u){ int L=graph[u].size(); rep(i,0,L-1){ int v=graph[u][i]; if(!bmask[v]){ bmask

POJ 1274 The Perfect Stall、HDU 2063 过山车(最大流做二分匹配)

The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24081   Accepted: 10695 Description Farmer John completed his new barn just last week, complete with all the latest milking technology. Unfortunately, due to engineering p

[题解]poj 1274 The Perfect Stall(网络流)

二分匹配传送门[here] 原题传送门[here] 题意大概说一下,就是有N头牛和M个牛棚,每头牛愿意住在一些牛棚,求最大能够满足多少头牛的要求. 很明显就是一道裸裸的二分图最大匹配,但是为了练练网络流(做其它的题的时候,神奇地re掉了,于是就写基础题了)的最大流算法,就做做这道题. 每一个牛都可一看成是个源点,每一个牛棚都可以看成是个汇点,但是一个网络应该只有一个汇点和一个源点才对,于是构造一个连接每个牛的超级源点,一个连接每个牛棚的超级汇点,每条边的容量为1,然后最大流Dinic算法(其它最

poj 1274 The Perfect Stall【匈牙利算法模板题】

The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20874   Accepted: 9421 Description Farmer John completed his new barn just last week, complete with all the latest milking technology. Unfortunately, due to engineering pr