POJ - 1325 Machine Schedule 二分图 最小点覆盖
题目大意:有两个机器,A机器有n种工作模式,B机器有m种工作模式,刚開始两个机器都是0模式。假设要切换模式的话,机器就必须的重新启动
有k个任务,每一个任务都能够交给A机器的i模式或者B机器的j模式完毕,问要重新启动多少次机器才干完毕任务
解题思路:两个机器的点分为两个点集。点集之间的关系就是任务了。要将全部任务都完毕。就要将全部边都覆盖掉,所以就是求最小点覆盖了。
这里有一个点要注意。假设全部任务中都有一个0,那么机器就不用重新启动了,重新启动次数就为0了(由于刚開始都是0)
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
const int N = 110;
int n, m, k;
int vis[N], link[N];
bool flag;
vector<int> g[N];
void init() {
for(int i = 1; i < n; i++)
g[i].clear();
int x, y, z;
for(int i = 0; i < k; i++) {
scanf("%d%d%d", &x, &y, &z);
if(y * z == 0)
continue;
g[y].push_back(z);
}
memset(link, -1, sizeof(link));
}
bool dfs(int u) {
for(int i = 0; i < g[u].size(); i++) {
int v = g[u][i];
if(vis[v])
continue;
vis[v] = 1;
if(link[v] == -1 || dfs(link[v])) {
link[v] = u;
return true;
}
}
return false;
}
void hungary() {
int ans = 0;
for(int i = 1; i < n; i++) {
memset(vis, 0, sizeof(vis));
if(dfs(i))
ans++;
}
printf("%d\n",ans);
}
int main() {
while(scanf("%d", &n) != EOF && n) {
scanf("%d%d", &m, &k);
init();
hungary();
}
return 0;
}
POJ - 1325 Machine Schedule 二分图 最小点覆盖的更多相关文章
- POJ 1325 Machine Schedule(最小点覆盖)
http://poj.org/problem?id=1325 题意: 两种机器A和B.机器A具有n种工作模式,称为mode_0,mode_1,...,mode_n-1,同样机器B有m种工作模式mode ...
- UVA1194 Machine Schedule[二分图最小点覆盖]
题意翻译 有两台机器 A,B 分别有 n,m 种模式. 现在有 k 个任务.对于每个任务 i ,给定两个整数$ a_i\(和\) b_i$,表示如果该任务在 A上执行,需要设置模式为 \(a_i\): ...
- [poj1325] Machine Schedule (二分图最小点覆盖)
传送门 Description As we all know, machine scheduling is a very classical problem in computer science a ...
- HDU 1150 Machine Schedule (二分图最小点覆盖)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1150 有两个机器a和b,分别有n个模式和m个模式.下面有k个任务,每个任务需要a的一个模式或者b的一个 ...
- POJ 1325 Machine schedine (二分图-最小点覆盖数=最大匹配边数)
As we all know, machine scheduling is a very classical problem in computer science and has been stud ...
- [POJ] 2226 Muddy Fields(二分图最小点覆盖)
题目地址:http://poj.org/problem?id=2226 二分图的题目关键在于建图.因为“*”的地方只有两种木板覆盖方式:水平或竖直,所以运用这种方式进行二分.首先按行排列,算出每个&q ...
- poj 1325 Machine Schedule 最小点覆盖
题目链接:http://poj.org/problem?id=1325 As we all know, machine scheduling is a very classical problem i ...
- HDU - 1150 POJ - 1325 Machine Schedule 匈牙利算法(最小点覆盖)
Machine Schedule As we all know, machine scheduling is a very classical problem in computer science ...
- POJ 1325 Machine Schedule(zoj 1364) 最小覆盖数
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=364 http://poj.org/problem?id=1325 题目大意: ...
随机推荐
- thrift 安装 make 失败 ar: .libs/ThriftTest_constants.o: No such file or directory
$wget http://mirrors.cnnic.cn/apache/thrift/0.9.1/thrift-0.9.1.tar.gz $tar zxvf thrift-0.9.1.tar.gz ...
- offset大家族(一)
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MYSQL 源代码编绎脚本
http://blog.csdn.net/hopingwhite/article/details/5808101
- C#关键字var是什么,在何种情况下使用
从.NET 3.0开始,在方法内部可以使用var关键字声明局部变量.var关键字到底是什么?在何种情况下使用呢? □ var关键字用来隐式地声明一个数据类型,变量类型是在编译期确定的,而不是在运行时确 ...
- 编码策略:在ios编码中一定要少写全局变量。
ios中全局变量默认是灰绿色的,只有少些全局变量,才能提高代码的聚合程度.才能更容易管理代码.
- Shimmer辉光动画效果
Shimmer辉光动画效果 效果 源码 https://github.com/facebook/Shimmer https://github.com/YouXianMing/Animations // ...
- kafka深入研究(六)
Kafka Producer端封装自定义消息 Kafka.network包源码解读 Kafka Consumer端的一些解惑 Kafka producer使用注意 kafka0.8的一些变动,先收藏, ...
- Configuring HDFS High Availability
Configuring HDFS High Availability 原文请訪问 http://blog.csdn.net/ashic/article/details/47024617,突袭新闻小灵儿 ...
- 使用HTML5开发离线应用 - cache manifest
HTML5 是目前正在讨论的新一代 HTML 标准,它代表了现在 Web 领域的最新发展方向.在 HTML5 标准中,加入了新的多样的内容描述标签,直接支持表单验证.视频音频标签.网页元素的拖拽.离线 ...
- Git 忽略规则 .gitignore文件 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...