HDU-1150-MachineSchedule(二分图匹配)
2024-09-29 06:26:17
链接:https://vjudge.net/problem/HDU-1150#author=0
题意:
在一个工厂,有两台机器A,
B生产产品。A机器有n种工作模式(模式0,模式1....模式n-1)。
B生产产品。A机器有n种工作模式(模式0,模式1....模式n-1)。
B机器有m种工作模式(模式0,模式1....模式m-1)。
现在要加工k个产品。每个产品可以由两 台机器特定的模式生产。
例如:产品0,可以由A机器在3号模式或B机器4号模式生产。
现在要加工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;
}
最新文章
- ar命令详解
- 【Codeforces720D】Slalom 线段树 + 扫描线 (优化DP)
- SDWebImage总结
- Bootstrap《第一篇》,关于container、jumbotron、row、col、text-center等的学习
- Swing列表框组件
- 【转】网络中的AS自治域
- java web服务器文件的下载(有下载弹出匡)
- JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记3
- 总结的一些封装好的javascript函数
- Android 代码编辑器中实现代码语法高亮
- 动态SQL的执行,注:exec sp_executesql 其实可以实现参数查询和输出参数的
- linux的string操作(字符串截取,长度计算)
- C语言实现ifconfig获取网卡接收和发送流量统计
- 一套代码小程序&;Web&;Native运行的探索02
- 《通过C#学Proto.Actor模型》之 HelloWorld
- Javascript高级编程学习笔记(32)—— 客户端检测(1)能力检测
- BottomNavigationBar
- IDEA2018.2.2 版本配置注释模板
- 《JavaScript 高级程序设计》第四章:变量、作用域和内存问题
- 递归与迭代的联系以及优缺点(以c++为例)