题意:

两台机器,A台机器有N种模式,B台机器有M种不同的模式,初始模式都是0

以及K个需要运行的任务(i,x,y),在A台机器是x模式,在B台机器是y模式。

请合理为每个任务安排一台机器并合理安排顺序,

每个任务要有对应A B机器的模式中至少要有一种来运行

每次切换都会付出代价1,使得代价最小,

- -求出这个最小值。

思路:

这很明显是有张二分图。

点:A模式,B模式;

边:job_k可由机器A的模式i转化成机器B的模式j(可以理解是任务)

那么问题就转化成是否存在一个最小点集,使得所有的边都至少和该点集的一个点相联系。

这就是最小顶点覆盖数

补:点覆盖、最小点覆盖、最小顶点覆盖数

点覆盖集即一个点集,使得所有边至少有一个端点在集合里。

或者说是“点” 覆盖了所有“边”。

极小点覆盖(minimal vertex covering):本身为点覆盖,其真子集都不是。

最小点覆盖(minimum vertex covering):点最少的点覆盖。点覆盖数(vertex covering number):最小点覆盖的点数。

=最大匹配数

其实这题对于本萌新而言是这个最小点覆盖的问题

二分图求最小顶点覆盖:

即用最少的顶点个数可以让每条边至少与其中一个点关联

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
#include <queue>
#include <math.h>
#include <queue>
#include <stack>
using namespace std;
#define INF 0x3f3f3f
#define pi acos(-1.0)
#define LL long long
#define N 550 int ma[N][N];
int cx[N],cy[N];
int vis[N];
int k,m,n; int fuck(int u)
{
for(int i=0; i<m; i++)
{
if(!vis[i]&&ma[u][i])
{
vis[i]=1;
if(cy[i]==-1||fuck(cy[i]))
{
cy[i]=u;
return 1;
}
}
}
return 0;
} int main()
{
while(~scanf("%d",&n)&&n)
{
int a,b;
scanf("%d%d",&m,&k);
memset(ma,0,sizeof(ma));
int x;
for(int i=0; i<k; i++)
{
scanf("%d%d%d",&x,&a,&b);
if(a>0&&b>0) //初始状态为0,一开始0的边不要加
ma[a][b]=1;
}
memset(cy,-1,sizeof(cy)); int ans=0;
for(int i=0; i<n; i++)
{
memset(vis,0,sizeof(vis));
if(fuck(i))
{
ans++;
}
}
printf("%d\n",ans);
}
return 0;
}

hdoj1150(最小点覆盖)的更多相关文章

  1. ACM/ICPC 之 机器调度-匈牙利算法解最小点覆盖集(DFS)(POJ1325)

    //匈牙利算法-DFS //求最小点覆盖集 == 求最大匹配 //Time:0Ms Memory:208K #include<iostream> #include<cstring&g ...

  2. 【POJ 3041】Asteroids (最小点覆盖)

    每次选择清除一行或者一列上的小行星.最少选择几次. 将行和列抽象成点,第i行为节点i+n,第j列为节点j,每个行星则是一条边,连接了所在的行列. 于是问题转化成最小点覆盖.二分图的最小点覆盖==最大匹 ...

  3. POJ 2226 最小点覆盖(经典建图)

    Muddy Fields Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8881   Accepted: 3300 Desc ...

  4. nyoj 237 游戏高手的烦恼 二分匹配--最小点覆盖

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=237 二分匹配--最小点覆盖模板题 Tips:用邻接矩阵超时,用数组模拟邻接表WA,暂时只 ...

  5. [USACO2005][POJ2226]Muddy Fields(二分图最小点覆盖)

    题目:http://poj.org/problem?id=2226 题意:给你一个字符矩阵,每个位置只能有"*"或者“.",连续的横着或者竖的“*"可以用一块木 ...

  6. POJ3041Asteroids(最小点覆盖+有点小抽象)

    Asteroids Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18289   Accepted: 9968 Descri ...

  7. hdu 1054 最小点覆盖

    Sample Input 4 0:(1) 1 1:(2) 2 3 2:(0) 3:(0) 5 3:(3) 1 4 2 1:(1) 0 2:(0) 0:(0) 4:(0)   Sample Output ...

  8. POJ2226 Muddy Fields(二分图最小点覆盖集)

    题目给张R×C的地图,地图上*表示泥地..表示草地,问最少要几块宽1长任意木板才能盖住所有泥地,木板可以重合但不能盖住草地. 把所有行和列连续的泥地(可以放一块木板铺满的)看作点且行和列连续泥地分别作 ...

  9. POJ1325 Machine Schedule(二分图最小点覆盖集)

    最小点覆盖集就是在一个有向图中选出最少的点集,使其覆盖所有的边. 二分图最小点覆盖集=二分图最大匹配(二分图最大边独立集) 这题A机器的n种模式作为X部的点,B机器的m种模式作为Y部的点: 每个任务就 ...

随机推荐

  1. 系统重装 WIN7如何创建和使用VHD文件

    1 在磁盘管理中,点击操作-创建VHD,然后可以创建一个空的VHD文件   2 右击这个磁盘,点击初始化磁盘,然后可以新建简单卷   3 右击这个磁盘,设置为脱机或者联机就可以在计算机中显示和隐藏这个 ...

  2. js中cookie的使用具体分析

                   JavaScript中的还有一个机制:cookie,则能够达到真正全局变量的要求. cookie是浏览器 提供的一种机制,它将document 对象的cookie属性提供 ...

  3. 【转载】高性能IO模型浅析

    服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking IO):默认创建的s ...

  4. 【iOS开源码】(1):CCLHTTPServer

    我从没有见过比 CCLHTTPServer 更简单的 iOS HTTP server了.你甚至不用创建不论什么子类就可以使用它.对于大部分任务,这个小巧但强悍的server能够满足你的须要. 它简单到 ...

  5. Python基础——数据类型、流程控制、常用函数

    Python tutorial :Python网站上的对 Python 语言和系统的基本概念和功能进行的非正式的介绍. 在学习Python之前,我们需要学会在各个平台配置Python的运行环境,下文中 ...

  6. java类加载机制的代码实例

    package typeinfo; import java.util.Random; class Initable { static final int staticFinal = 47 ; stat ...

  7. ArcGIS 10.3 for Server新特性介绍

    ArcGIS10.3的正式版立即在美国Esri全球用户大会推出.中国的正式发行时间预计在Esri中国的用户大会.以下就将用户比較关心的ArcGIS 10.3 for Server的新特性给大家进行简单 ...

  8. 翻译:A Tutorial on the Device Tree (Zynq) -- Part IV

    获取资源信息 内核模块驱动加载之后,就开始把硬件资源管理起来,如读写寄存器.接收中断. 来看看设备树里的一条: xillybus_0: xillybus@50000000 { compatible = ...

  9. (转载)display:inline、block、inline-block的区别

    display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div& ...

  10. const& 的东西

    class_name ( class_name const & source ); 是拷贝构造函数的标准声明. 它和如下声明是一个意思 class_name ( const class_nam ...