【USACO4.2.2】完美的牛栏 二分图的匹配

来源:互联网 发布:小鸭淘宝复制软件 编辑:程序博客网 时间:2024/05/02 04:43

裸二分图匹配




/*TASK:stall4LANG:C++*/#include<iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;const int max_ver = 200 + 10;struct edge{edge *next;int ver;edge(int _Ver, edge *_Next):ver(_Ver), next(_Next){}edge(){}}*net[max_ver]={NULL};int n, m;inline void insert(int a, int b){net[a] = new edge(b, net[a]);}void init(){scanf("%d%d", &n, &m);int i = 0;while (m--){++ i;int tmp;scanf("%d", &tmp);while (tmp--){int ver;scanf("%d", &ver);insert(i, ver);}}}int vis[max_ver], belong[max_ver];int dfs(int k){for (edge *e = net[k]; e; e = e -> next){if (!vis[e -> ver]){vis[e -> ver] = 1;if (belong[e -> ver] == -1 || dfs(belong[e -> ver])){belong[e -> ver] = k;return 1;}}}return 0;}void doit(){int ans = 0;memset(belong, -1, sizeof(belong));for (int i = 1; i <= n; ++ i){memset(vis, 0, sizeof(vis));ans += dfs(i);}printf("%d\n", ans);}int main(){freopen("stall4.in","r",stdin);freopen("stall4.out","w",stdout);init();doit();return 0;}


0 0
原创粉丝点击