POJ 1325 二分图最小点集覆盖
来源:互联网 发布:mac重启黑屏一直转圈 编辑:程序博客网 时间:2024/05/22 05:11
一道貌似难题的水题,,不过我还是想了两个多小时。首先理解题意就理解了好久,,然后又想建图又想了好久,,最后发现建过图之后就是一道裸的二分图最小点集覆盖。。。。悲催。。。题目:
Machine Schedule
Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 8033 Accepted: 3409
Description
As we all know, machine scheduling is a very classical problem in computer science and has been studied for a very long history. Scheduling problems differ widely in the nature of the constraints that must be satisfied and the type of schedule desired. Here we consider a 2-machine scheduling problem.
There are two machines A and B. Machine A has n kinds of working modes, which is called mode_0, mode_1, ..., mode_n-1, likewise machine B has m kinds of working modes, mode_0, mode_1, ... , mode_m-1. At the beginning they are both work at mode_0.
For k jobs given, each of them can be processed in either one of the two machines in particular mode. For example, job 0 can either be processed in machine A at mode_3 or in machine B at mode_4, job 1 can either be processed in machine A at mode_2 or in machine B at mode_4, and so on. Thus, for job i, the constraint can be represent as a triple (i, x, y), which means it can be processed either in machine A at mode_x, or in machine B at mode_y.
Obviously, to accomplish all the jobs, we need to change the machine's working mode from time to time, but unfortunately, the machine's working mode can only be changed by restarting it manually. By changing the sequence of the jobs and assigning each job to a suitable machine, please write a program to minimize the times of restarting machines.
There are two machines A and B. Machine A has n kinds of working modes, which is called mode_0, mode_1, ..., mode_n-1, likewise machine B has m kinds of working modes, mode_0, mode_1, ... , mode_m-1. At the beginning they are both work at mode_0.
For k jobs given, each of them can be processed in either one of the two machines in particular mode. For example, job 0 can either be processed in machine A at mode_3 or in machine B at mode_4, job 1 can either be processed in machine A at mode_2 or in machine B at mode_4, and so on. Thus, for job i, the constraint can be represent as a triple (i, x, y), which means it can be processed either in machine A at mode_x, or in machine B at mode_y.
Obviously, to accomplish all the jobs, we need to change the machine's working mode from time to time, but unfortunately, the machine's working mode can only be changed by restarting it manually. By changing the sequence of the jobs and assigning each job to a suitable machine, please write a program to minimize the times of restarting machines.
Input
The input file for this program consists of several configurations. The first line of one configuration contains three positive integers: n, m (n, m < 100) and k (k < 1000). The following k lines give the constrains of the k jobs, each line is a triple: i, x, y.
The input will be terminated by a line containing a single zero.
The input will be terminated by a line containing a single zero.
Output
The output should be one integer per line, which means the minimal times of restarting machine.
Sample Input
5 5 100 1 11 1 22 1 33 1 44 2 15 2 26 2 37 2 48 3 39 4 30
Sample Output
3ac代码:
#include <iostream>#include <algorithm>#include <vector>#include <string.h>#include <cstdio>using namespace std;vector<int> ss[105];int flag[105],visted[105];bool dfs(int x){for(int i=0;i<ss[x].size();++i){if(!visted[ss[x][i]]){ visted[ss[x][i]]=1; if(flag[ss[x][i]]==-1||dfs(flag[ss[x][i]])){ flag[ss[x][i]]=x;return true; }}}return false;}int main(){ int n,m,k; while(scanf("%d",&n)&&n){ scanf("%d%d",&m,&k);memset(flag,-1,sizeof(flag));memset(ss,0,sizeof(ss));int num,x,y;while(k--){ scanf("%d%d%d",&num,&x,&y); if(!y) continue; ss[x].push_back(y);}int sum=0;for(int i=1;i<=n;++i){ memset(visted,0,sizeof(visted)); if(dfs(i)) sum++;}printf("%d\n",sum); } return 0;}
- POJ 1325二分图,最小点覆盖
- POJ 1325 二分图最小点集覆盖
- POJ 2226 二分图 最小点覆盖
- poj 2226 二分图最小点覆盖
- POJ 1325 Machine Schedule 二分图最小点覆盖
- POJ 1325 Machine Schedule 二分图 最小点覆盖
- POJ - 1325 Machine Schedule 二分图 最小点覆盖
- poj 3041 二分图最小点集覆盖
- poj 2226 二分图最小点集覆盖
- poj 3692 二分图最小点集覆盖
- poj 2226 二分图最小点集覆盖
- POJ 1325 Machine Schedule (二分图最小点集覆盖 匈牙利算法)
- POJ 1325 Machine Schedule(二分匹配 最小点覆盖)
- Poj 1325 Machine Schedule【二分匹配-------最小点覆盖】
- POJ 1325 简单基础匈牙利二分匹配:最小点覆盖
- POJ 3308 二分图最小点权覆盖 最大流
- POJ 3692 最小点覆盖 最大二分图匹配
- poj 3041 二分图最大匹配(最小点覆盖问题)
- IE8 开发人员工具 自动打开
- 苹果iPhone 5 4S发布会现场实录
- UCWeb印度市场份额超两成 宣布进军北美市场
- 关于bash命令
- VMWare Workstation 8 requires CPU support X64 technique
- POJ 1325 二分图最小点集覆盖
- 这些怎么区别?(*(char **(*)(char **,char **))0)(char **,char **)
- 阿里巴巴公司DBA笔试题及参考答案
- Tomcat:IOException while loading persisted sessions: java.io.EOFException异常处理
- 多个字符串的最长公共字串
- 常见Oracle HINT的用法
- 常用排序算法的java实现
- 数术
- Dom4j解析文档