POJ 1235 Machine Schedule 【二分图】
这道题考察对最小点覆盖的理解。
做法:
对于一个作业,它需要A的a模式和B的b模式,那么可以从a模式向b模式连一条边;可以感性的理解为每一条边就是一个作业,需要求得有多少个模式可以覆盖所有的边,也就是最小点覆盖,也就是最大匹配。
注意 :
由于A,B的机器初始模式为0,那么所有的可以用模式0完成的工作都可以不用更换模式而完成!所以我们只需要考虑完成模式不包含0的作业。
AC代码:
#include <vector>
#include <cstdio>
#include <cstring> const int N = + ; std :: vector < int > g [ N ] ;
int link [ N ] , n , k , m , ans , x , a , b ;
bool vis [ N ] ; void create ( int u , int v ) {
g [ u ] . push_back ( v ) ;
} bool find ( int x ) {
int v ;
for ( int i = ; i < g [ x ] . size ( ) ; i ++ ) {
v = g [ x ] [ i ] ;
if ( ! vis [ v ] ) {
vis [ v ] = true ;
if ( ( ! link [ v ] ) || find ( link [ v ] ) ) {
link [ v ] = x ;
return true ;
}
}
}
return false ;
} void init ( ) {
memset ( link , , sizeof ( link ) ) ;
ans = ;
} int main ( ) { // 待调试
while ( ) {
scanf ( "%d" , & n ) ;
if ( n == ) return ;
scanf ( "%d%d" , & m , & k ) ;
init ( ) ;
// A : 1 ~ n ;
// B : n + 1 ~ n + m ;
for ( int i = ; i <= k ; i ++ ) {
scanf ( "%d%d%d" , & x , & a , & b ) ;
if ( a * b != ) create ( a , b + n ) ;
}
for ( int i = ; i <= n ; i ++ ) {
memset ( vis , false , sizeof ( vis ) ) ;
if ( find ( i ) )
ans ++ ;
}
printf ( "%d\n" , ans ) ;
for ( int i = ; i <= n + m ; i ++ )
g [ i ] . clear ( ) ;
}
}
AC
POJ 1235 Machine Schedule 【二分图】的更多相关文章
- POJ - 1325 Machine Schedule 二分图 最小点覆盖
题目大意:有两个机器,A机器有n种工作模式,B机器有m种工作模式,刚開始两个机器都是0模式.假设要切换模式的话,机器就必须的重新启动 有k个任务,每一个任务都能够交给A机器的i模式或者B机器的j模式完 ...
- POJ 1325 Machine Schedule——S.B.S.
Machine Schedule Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13731 Accepted: 5873 ...
- poj 1325 Machine Schedule 二分匹配,可以用最大流来做
题目大意:机器调度问题,同一个任务可以在A,B两台不同的机器上以不同的模式完成.机器的初始模式是mode_0,但从任何模式改变成另一个模式需要重启机器.求完成所有工作所需最少重启次数. ======= ...
- poj 1325 Machine Schedule 题解
Machine Schedule Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14479 Accepted: 6172 ...
- ZOJ 1364 Machine Schedule(二分图最大匹配)
题意 机器调度问题 有两个机器A,B A有n种工作模式0...n-1 B有m种工作模式0...m-1 然后又k个任务要做 每一个任务能够用A机器的模式i或b机器的模式j来完毕 机器開始都处于模式0 每 ...
- 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 最小点覆盖
题目链接:http://poj.org/problem?id=1325 As we all know, machine scheduling is a very classical problem i ...
- poj 1325 Machine Schedule
Time Limit: 1000 MS Memory Limit: 10000 KB 64-bit integer IO format: %I64d , %I64u Java class name ...
- HDU1150 Machine Schedule(二分图最大匹配、最小点覆盖)
As we all know, machine scheduling is a very classical problem in computer science and has been stud ...
随机推荐
- 3The superclass “javax.servlet.http.HttpServlet" was not found on the Java Build Path 之一
另外一篇短文里还有第三种解决方案,查看请点击这里 1.异常信息 创建maven web项目时,出现 The superclass “javax.servlet.http.HttpServlet&quo ...
- pageHelper插件
mybatis的分页插件使用总结 环境准备工作: 1.在使用pagehelper插件时,我已经搭建好了ssm(spring+springmvc+mybatis) 在这简单描述一下ssm搭建过程 ...
- Django From组件 fields widgets
一.Form组件之字段 Field required=True, 是否允许为空 widget=None, HTML插件 label=None, 用于生成Label标签或显示内容 initial=Non ...
- 2.Servlet基础总结
一.简介 1.什么是Servlet Servlet(Server Applet),全称Java Servlet,未有中文译文.是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成 ...
- 关于 ExpressRoute 的虚拟网络网关
虚拟网络网关用于在 Azure 虚拟网络和本地位置之间发送网络流量. 配置 ExpressRoute 连接时,必须创建并配置虚拟网络网关和虚拟网络网关连接. 创建虚拟网络网关时,需要指定几项设置. 其 ...
- 使用YXHUD
使用YXHUD 这是本人自己设计的一个类,但功能很不完善,先看看效果: 源码: YXHUD.h 与 YXHUD.m // // YXHUD.h // UILabel // // Created by ...
- php实现菲波那切数列和杨辉三角
1.递归 显示斐波那契数列 <?PHP function recursion($num){ //判断是否小于0 if($ ...
- 长距离单历元非差GNSS网络RTK理论与方法总结(未完)
2018-11-04 1.状态空间: 状态空间是控制工程中的一个名词.状态是指在系统中可决定系统状态.最小数目变量的有序集合. 而所谓状态空间则是指该系统全部可能状态的集合.简单来说,状态空间可以 ...
- Winform启动时隐藏不显示
我最终用了这个方法:1.MainForm的构造方法中添加: public MainForm() { InitializeComponent(); this.ShowInTaskbar = false; ...
- Notepad++调用python
***首先确保在cmd下能直接运行python*** (博主的环境:win10 下2和3共存) 接下来进入主题,用Notepad++打开py文件,然后按 F5 键弹出运行窗口,输入以下内容: pyth ...