Machine Schedule ssl 1342/poj 1325 最小覆盖问题
来源:互联网 发布:淘宝上的网红店有哪些 编辑:程序博客网 时间:2024/05/14 07:09
Description
我们现在有两台机器,A和B。 A机器有n个工作模式,分别为 mode_0、mode_1….mode_n-1,B机器有m个工作模式:mode_0、mode_1….mode_m-1,我们现在有一些工作,每个工作可以用一个三元组来描述(i,x, y ),表示这个工作的编号为i,它可以在A机器的mode_x下或B机器的mode_y模式下被完成。
我们现在有t个工作,去交给A、B两机器完成,机器如果改变一个模式需要人工去操作…
请你排出工作表,以使人工操作的次数最少。
Input
n,m,k (n, m < 100) and k (k < 1000).
下接k行描述这k件工作。
Output
人工操作最少次数。
分析
和vijos 1204 CoVH之柯南开锁是一个道理
不过要处理一下连接0状态的情况。(注意起始时,机器都处在模式0!!)
代码
#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;struct{ int x,y; int next;}edge[2001];int ls[2001];int st[2001];int v[2001];int n,m,num;int dfs(int r){ int i=ls[r]; while (i!=0) { if (v[edge[i].y]==0) { int k=st[edge[i].y]; st[edge[i].y]=r; v[edge[i].y]=1; if ((k==0)||(dfs(k)==1)) return 1; st[edge[i].y]=k; } i=edge[i].next; } return 0;}void lalala(){ for (int i=1;i<=n;i++){ memset(v,0,sizeof(v)); int j; j=dfs(i); } return;}int main(){ while (1==1){ memset(ls,0,sizeof(ls)); memset(edge,0,sizeof(edge)); memset(st,0,sizeof(st)); scanf("%d",&n); if (n==0) return 0; scanf("%d%d",&m,&num); int nm=0; for (int i=1;i<=num;i++) { int x,y,z; scanf("%d%d%d",&z,&x,&y); if ((x==0)||(y==0)) continue; nm++; edge[nm].x=x; edge[nm].y=n+y; edge[nm].next=ls[x]; ls[x]=nm; } int ans=0; lalala(); for (int i=n+1;i<=n+m;i++) if (st[i]!=0) ans++; printf("%d\n",ans); }}
0 0
- Machine Schedule ssl 1342/poj 1325 最小覆盖问题
- 最小覆盖 Machine Schedule POJ 1325
- POJ 1325 Machine Schedule 最小点覆盖
- poj 1325 Machine Schedule--最小点覆盖
- POJ 1325 Machine Schedule(最小覆盖数)
- poj 1325 Machine Schedule (最小点覆盖)
- POJ 1325 Machine Schedule(最小覆盖数)
- POJ 1325 Machine Schedule(最小覆盖数
- POJ 1325 Machine Schedule 二分图最小点覆盖
- poj 1325 Machine Schedule---二分图求最小顶点覆盖
- POJ 1325 Machine Schedule 二分图 最小点覆盖
- poj 1325 Machine Schedule(最小顶点覆盖+最大匹配)
- POJ 1325 Machine Schedule(zoj 1364) 最小覆盖数
- POJ 1325 Machine Schedule(匈牙利—最小点覆盖)
- POJ 1325 Machine Schedule(二分匹配 最小点覆盖)
- POJ 1325 Machine Schedule(最小点覆盖)
- POJ - 1325 Machine Schedule 二分图 最小点覆盖
- POJ 1325 Machine Schedule 二分图 最小覆盖
- C++友元函数
- 【BZOJ 3223】文艺平衡树
- HTML-CSS照片墙
- 并行编程入门
- 51Nod-1006-Tick and Tick
- Machine Schedule ssl 1342/poj 1325 最小覆盖问题
- 公平博弈笔记
- 设置 BottomSheetDialog 的高度
- 初见Python的第三方模块BeautifulSoup
- [NOIP2015] 神奇的幻方 D1 T1
- 2017届努比亚校招软件测试工程师面试
- git命令提示簿
- ELK搭建与hbase关联
- 关于多维最远Manhattan距离