链接:https://vjudge.net/problem/HDU-1150#author=0

题意:

在一个工厂,有两台机器A,
B生产产品。A机器有n种工作模式(模式0,模式1....模式n-1)。 
B机器有m种工作模式(模式0,模式1....模式m-1)。
现在要加工k个产品。每个产品可以由两 台机器特定的模式生产。
例如:产品0,可以由A机器在3号模式或B机器4号模式生产。
   两台机器初始模式都在模式0,但是,这两台机器不是很先进,如果需要切换模式,只能由
人手工切换模式,手工切换可以切换到任意模式。求加工完k个产品需要切换模式的最少次数。
(生产产品的顺序可以任意)

思路:

二分图匹配, 尽力从1找到n-1,在右边能找到新的点的情况说明要更改模式。

也就是一条增广路对应一次模式切换。

代码:

#include <iostream>
#include <memory.h>
#include <string>
#include <istream>
#include <sstream>
#include <vector>
#include <stack>
#include <algorithm>
#include <map>
#include <queue>
#include <math.h>
#include <cstdio>
#include <set>
#include <iterator>
#include <cstring>
using namespace std; typedef long long LL;
const int MAXN = 1e3+10; vector<int> G[MAXN];
int Link[MAXN], Vis[MAXN];
int n, m, k; bool Dfs(int x)
{
for (int i = 0;i < G[x].size();i++)
{
int node = G[x][i];
if (!Vis[node])
{
Vis[node] = 1;
if (Link[node] == 0 || Dfs(Link[node]))
{
Link[node] = x;
return true;
}
}
}
return false;
} int Solve()
{
int res = 0;
memset(Link, 0, sizeof(Link));
for (int i = 1;i < n;i++)
{
memset(Vis, 0, sizeof(Vis));
if (Dfs(i))
res++;
}
return res;
} void Init()
{
for (int i = 1;i <= n;i++)
G[i].clear();
} int main()
{
while (cin >> n && n)
{
Init();
cin >> m >> k;
int num, l, r;
for (int i = 1;i <= k;i++)
{
cin >> num >> l >> r;
if (l > 0 && r > 0)
G[l].push_back(r);
}
cout << Solve() << endl;
} return 0;
}

  

最新文章

  1. ar命令详解
  2. 【Codeforces720D】Slalom 线段树 + 扫描线 (优化DP)
  3. SDWebImage总结
  4. Bootstrap《第一篇》,关于container、jumbotron、row、col、text-center等的学习
  5. Swing列表框组件
  6. 【转】网络中的AS自治域
  7. java web服务器文件的下载(有下载弹出匡)
  8. JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记3
  9. 总结的一些封装好的javascript函数
  10. Android 代码编辑器中实现代码语法高亮
  11. 动态SQL的执行,注:exec sp_executesql 其实可以实现参数查询和输出参数的
  12. linux的string操作(字符串截取,长度计算)
  13. C语言实现ifconfig获取网卡接收和发送流量统计
  14. 一套代码小程序&amp;Web&amp;Native运行的探索02
  15. 《通过C#学Proto.Actor模型》之 HelloWorld
  16. Javascript高级编程学习笔记(32)—— 客户端检测(1)能力检测
  17. BottomNavigationBar
  18. IDEA2018.2.2 版本配置注释模板
  19. 《JavaScript 高级程序设计》第四章:变量、作用域和内存问题
  20. 递归与迭代的联系以及优缺点(以c++为例)

热门文章

  1. Servlet传递数据方式
  2. X-Forward-For ip
  3. 练习E-R图书管理数据库
  4. linux 使用总结
  5. MySQL常用的数据类型及函数_20160920
  6. pig ERROR 2997: Encountered IOException. File or directory null does not exist.
  7. 新手必看】Highcharts的100个基础问答
  8. Python基础(四)——迭代器/对象,生成器
  9. CV codes代码分类整理合集 《转》
  10. zoj2901【DP&#183;二进制优化】