题目链接:http://poj.org/problem?id=1325

题意:A机器有n个模式,B机器有m个模式,有k个任务,第i个任务可以用A机器的ai模式或者B机器的bi模式,换模式需要重启,开始两个机器都在模式0,问最少需要重启几次。

分析:要求最小的重启次数,也就是求出除了0模式,最少要工作在几个模式

建图:A的模式为X集,B的模式为Y集,每个任务看做一条线,连接X集和Y集,则问题转化为求X、Y中最少的点,使得每条线至少有一个端点被选。即最小点集覆盖。

根据最小点集覆盖=二分图最大匹配。

代码:

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 using namespace std;
 5 const int N=1001;
 6 int map[N][N],vis[N],link[N];
 7 int n1,n2,k;
 8 int find(int x)
 9 {
10     int i;
11     for(i=1;i<=n2;i++)
12     {
13         if(map[x][i]&&!vis[i])
14         {
15             vis[i]=1;
16             if(!link[i]||find(link[i]))
17             {
18                 link[i]=x;
19                 return 1;
20             }
21         }
22     }
23     return 0;
24 }
25 int main()
26 {
27     int a,b,c,i,sum;
28     while(~scanf("%d",&n1))
29     {
30         if(!n1)
31             break;
32         scanf("%d%d",&n2,&k);
33         sum=0;
34         memset(map,0,sizeof(map));
35         memset(link,0,sizeof(link));
36         while(k--)
37         {
38             scanf("%d%d%d",&a,&b,&c);
39             if(b*c)
40                 map[b][c]=1;
41         }
42         for(i=1;i<=n1;i++)
43         {
44             memset(vis,0,sizeof(vis));
45             if(find(i))
46                 sum++;
47         }
48         printf("%d\n",sum);
49     }
50     return 0;
51 }

转载于:https://www.cnblogs.com/pony1993/archive/2012/08/13/2636916.html

POJ 1325 Machine Schedule(二分图最小点集覆盖)相关推荐

  1. POJ 1325 Machine Schedule[二分图匹配*最小点覆盖]

    题意: 两台机器,有 k 个工作,每个工作可以在 a 机器的 P 模式或在 b 机器的 q 模式下解决,两台机器初始状态为 0 模式,每台机器没变换一次模都要重启一次, 问至少重启多少次可以完成所有工 ...

  2. POJ 1325 Machine Schedule(zoj 1364) 最小覆盖数

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=364 http://poj.org/problem?id=1325 题目大意: ...

  3. poj 1325 Machine Schedule 最小顶点覆盖

    题意 两个机器A,B, 分别有 N,M个工作模式, K个作业,可以在( Ai, Bj ) 模式下工作. 机器最初在模式0下. 问最小的 切换模式次数. 解题思路 A, B 两个天然二分图顶点集合,   ...

  4. poj 1325 Machine Schedule 解题报告

    题目链接:http://poj.org/problem?id=1325 题目意思:有 k 个作业,机器A有 n 个模式:0 ~ n-1,机器B 有 m 个模式:0~ m-1.每一个作业能运行在 A 的 ...

  5. POJ-2226 Muddy Fields 最小点集覆盖

    题目链接:http://poj.org/problem?id=2226 这题是POJ 3041的升级版本,很有意思,要求木板不能盖在草地上.那么这里我们可以把每行一连续'*'的看做行,把每列连续的'* ...

  6. 洛谷 - P2764 最小路径覆盖问题(最大流+二分图最小路径覆盖+路径打印)

    题目链接:点击查看 题目大意:给出一个由n个点和m条边组成的有向无环图,现在需要我们求最少可以将n个点分为多少条简单路径,并打印出每一条路径 题目分析:题意挺难懂的..简单来说就是让求二分图最小路径覆 ...

  7. POJ 3216 Repairing Company【二分图最小路径覆盖】

    题意: 告诉你 Q 格街区,一共有 M d 个任务分布在这Q 个街区里面,知道了每个任务的开始时间和需要一个人的完成时间,   问最少需要派多少人才能做完所有的任务. 分析: 求二分图的最小路径覆盖, ...

  8. POJ-1325 Machine Schedule 二分图匹配 最小点覆盖问题

    POJ-1325 题意: 有两台机器A,B,分别有n,m种模式,初始都在0模式,现在有k项任务,每项任务要求A或者B调到对应的模式才能完成.问最少要给机器A,B调多少次模式可以完成任务. 思路: 相当 ...

  9. POJ - 2195 Going Home(二分图最小权匹配+KM+思维建边/最小费用最大流)

    题目链接:点击查看 题目大意:给出一个n*m的地图,现在有一定数量的小人要回到屋子里去,题目保证图中的小人和屋子的数量是一致的,小人回到小屋的距离是两个点坐标的曼哈顿距离,每个小屋只能容纳一个小人,现 ...

最新文章

  1. oracle 回收碎片,Oracle10g中表的碎片空间回收
  2. 解决: AttributeError: module 'cv2' has no attribute 'SURF'
  3. 才云开源 Nirvana:Golang REST API框架
  4. 手游行业洞察:Project Makeover成爆款,中国手游出海如何破局
  5. Android 中文API (46) —— SimpleAdapter
  6. 心理压力如何测试软件,心理压力测试 缓解压力有什么办法
  7. ARM架构与系列简介
  8. 【图神经网络】图神经网络(GNN)学习笔记:图滤波器与图卷积神经网络
  9. Unity实战篇 | unity接入QQ登录 详细过程——Android篇
  10. 记一次阿里云面试心得
  11. 博客营销 交流互动大舞台
  12. assoc fetch mysql 用法_php mysql_fetch_assoc 循环遍历表格
  13. javascript 获取当前日期 月份 时间
  14. 修复运营商网站劫持,Win8.1怎么修改DNS
  15. python读取nc数据_python读取nc文件
  16. 基于springboot的景区购票网站源码
  17. chosen 下拉框
  18. 企业文档过多如何管理?文档协同能够帮到你
  19. 2022考研数学李永乐复习全书pdf版-基础篇(数一二三通用)
  20. 空间三角形_对应三种空间形状的三种几何

热门文章

  1. HierarchicalBeanFactory接口
  2. 前端学习总结——CSS布局方式之传统布局
  3. node --- 使用express.Router与body-parser
  4. Jquery操作select小结
  5. 『原创』一个基于Win CE 5.0的Txt文件阅读器
  6. lucene之Field属性的解释
  7. MySQL5.7多源复制的实验
  8. Oracle存储过程 使用游标、数组的配合查询
  9. oracle索引建立
  10. 【活动】畅想云端加油站,赢iPad