二分图匹配模板题

#include <bits/stdc++.h>
#define FOPI freopen("in.txt", "r", stdin);
#define FOPO freopen("out.txt", "w", stdout);
using namespace std;
typedef long long LL;
const int maxn = 1500 + 1000;
int n, k, x, y;
int link[maxn], vis[maxn];
vector<int> v[maxn];void build(int x, int y)
{v[x].push_back(y), v[y].push_back(x);
}bool dfs(int k)
{int sz = v[k].size();for (int i = 0; i < sz; i++){if (!vis[v[k][i]]){vis[v[k][i]] = 1;if (link[v[k][i]] == -1 || dfs(link[v[k][i]])){link[v[k][i]] = k;return true;}}}return false;
}int hungary()
{int u;int res = 0;memset(link, -1, sizeof(link));for (int i = 0; i < n; i++){memset(vis, 0, sizeof(vis));if (dfs(i)) res++;}return res;
}int main()
{while(~scanf("%d", &n)){for (int i = 0; i < n; i++) v[i].clear();for (int i = 1; i <= n; i++){scanf("%d:(%d)", &x, &k);for (int j = 1; j <= k; j++)scanf("%d", &y), build(x, y), build(y, x);}printf("%d\n", hungary()/2);}
}

转载于:https://www.cnblogs.com/ruthank/p/10604211.html

HDU - 1054 Strategic Game (二分图匹配模板题)相关推荐

  1. hdu 1054 Strategic Game 二分图最小点覆盖

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1054 题意: 给出一个无向图,求最小点覆盖. 思路: 用网络流来做设立一个超级源点和一个超级汇点. 每 ...

  2. HDU - 1054 Strategic Game(最小点覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:给出一棵树,现在要在节点上放置士兵,每个士兵可以监视与其所在的节点直接相连的节点,问最少需要多少个士兵才能将整棵树都监视到 题目分析:求最少的节点,以保证每条边都有一个端 ...

  3. HDU——1054 Strategic Game

    Strategic Game Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  4. hdu 1054 Strategic Game 最小点覆盖 = 最大二分匹配

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1054 简单二分匹配,根据题意构造一个无向图.然后求最小点覆盖,然后扫描mark数组将曾经匹配的点所匹配 ...

  5. hdu 1054 Strategic Game

    http://acm.hdu.edu.cn/showproblem.php?pid=1054 树形DP 主要是把思路屡清楚 选个根结点进行向下搜 每个点都有两种可能 放士兵还是不放 防止重复搜索就可以 ...

  6. HDU 1054 Strategic Game 最小点覆盖

     最小点覆盖概念:选取最小的点数覆盖二分图中的所有边. 最小点覆盖 = 最大匹配数. 证明:首先假设我们求的最大匹配数为m,那么最小点覆盖必然 >= m,因为仅仅是这m条边就至少需要m个点.然后 ...

  7. NYOJ 237 NYOJ 239 二分图 最大匹配模板题 游戏高手的烦恼 月老的难题 两个题一样

    原题链接 匈牙利算法 #include<cstdio> #include<cstring> using namespace std; #define N 10010 #defi ...

  8. hdu 1054(最小顶点覆盖)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1054 思路:最小顶点覆盖 == 最大匹配(双向图)/2...不过一开始是用邻接矩阵,傻傻的TLE... ...

  9. 【模板】匈牙利算法 二分图最大匹配题模板

    [任务] 给定一个二分图,用匈牙利算法求这个二分图的最大匹配数. [说明] 求最大匹配,那么我们希望每一个在左边的点都尽量找到右边的一个点和它匹配. 我们一次枚举左边的点x的所有出边指向的点y, 若y ...

最新文章

  1. 利用脚本生成GUID
  2. AS升级3.0,gradle plugin 升级到3.0.0遇到的问题
  3. mysql 郝朝阳_秒级故障切换!用MHA轻松实现MySQL高可用(三)
  4. [zhuan]二叉树遍历算法实现(C#2.0)
  5. 备份表到存在的表或者自动新建表
  6. CMake指令入门 ——以构建OpenCV项目为例
  7. 这个为生信学习打造的开源Linux/Bash教程真香!!!
  8. FileZilla 服务器端win server2008以上的配置
  9. 如何部署前端react项目到服务器,Vue、React前端项目打包部署
  10. 小程序下wxParse 渲染html代码
  11. 初学视觉学习笔记----打开摄像头遇到的问题
  12. 如何快速抠图?图片怎样去底色变透明?
  13. ERROR: Cannot uninstall 'xxx'. It is a distutils installed project and thus we cannot accurately
  14. python推箱子游戏代码_推箱子游戏,推箱子游戏代码python实现
  15. 信息学奥赛一本通T1183-病人排队-题解(C语言代码)
  16. 蓝字冲销是什么意思_会计上的红字蓝字是什么意思?正常记录是什么...
  17. 微信文章如何自动排版
  18. Cesium专栏-空间分析之坡度分析(附源码下载)
  19. MySQL 百万级/千万级表 全量更新
  20. 计算机扩大C盘分区容量,电脑c盘空间太小,用分区软件把c盘扩大10g随后开机就这样了,怎么搞...

热门文章

  1. linux 文件 16进制显示,linux 16进制 产看文件
  2. 地面指示标志_消防应急照明与疏散指示系统的设计和施工安装规范,收藏学习!...
  3. Linux(Ubuntu)如何安装常用软件(chrome、输入法、远程桌面)
  4. ansible笔记(8):常用模块之系统类模块(二)
  5. 递归算法造成的问题分析与解决
  6. 如何选择使用字符串还是数字呢?
  7. jacson 将json字符串转换为list
  8. eax ...edi esp ebp寄存器简介(转)
  9. F: 绝对值 山东科技大学OJ C语言
  10. 使用OpenCV-python识别图片视频中的人脸和眼睛