HDOJ1150(最小点集覆盖)
2015-08-25 19:02
399 查看
#include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <vector> using namespace std; #define N 101 int match ; bool vis ; vector <int> e ; int n, m, k; void InitRead(); void DataProcess(); bool Dfs(int x); int main() { while (~scanf("%d", &n)) { if (n == 0) break; InitRead(); DataProcess(); } return 0; } void InitRead() { scanf("%d %d", &m, &k); memset(match, -1, sizeof(match)); for (int i=0; i<N; ++i) e[i].clear(); int a, b; for (int i=0; i<k; ++i) { scanf("%*d %d %d", &a, &b); if (a == 0 || b == 0) continue; //可以用模式0解决的任务不建边 e[a].push_back(b); } return; } void DataProcess() { int ans = 0; for (int i=0; i<n; ++i) { memset(vis, false, sizeof(vis)); if (Dfs(i)) ans++; } printf("%d\n", ans); return; } bool Dfs(int x) { int size = e[x].size(); for (int i=0; i<size; ++i) { if (!vis[e[x][i]]) { vis[e[x][i]] = true; if (match[e[x][i]] == -1 || Dfs(match[e[x][i]])) { match[e[x][i]] = x; return true; } } } return false; }
相关文章推荐
- hdoj 1143 Tri Tiling 【递推】
- 一次被黑追凶(未完待续)
- POJ2503词典 Babelfish在外文中查找对应的英文
- change Java on Ubuntu Kylin 15.04
- 子父类中构造函数的特点
- 堆排序2.0
- jquery声明
- C语言常用的小代码
- 写个脚本列出neutron的ovs的topology。
- 黑马程序员—— Java 基础 面向对象之继承 (复习)
- git missing change
- 菜鸟进阶Android Touch事件传递(四)
- ArcEngine下一个TIN生成的轮廓
- 从0到100——知乎架构变迁史
- Oracle的常见问题
- mapreduce读取hbase中表的数据,直接打印或者回传数据到hbase数据库表
- 图片整理
- 域名解析-vs2010代码示例
- Bootloader架构设计
- 用图片平铺背景色