Machine Schedule

 1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <cmath>
5 #include <algorithm>
6 #include <string>
7 #include <vector>
8 #include <set>
9 #include <map>
10 #include <stack>
11 #include <queue>
12 #include <sstream>
13 #include <iomanip>
14 using namespace std;
15 typedef long long LL;
16 const int INF = 0x4fffffff;
17 const double EXP = 1e-5;
18 const int MS = 105;
19 const int SIZE = 100005;
20
21 // data struct
22 int edges[MS][MS];
23 int cx[MS],cy[MS];
24 int mark[MS];
25
26 int n,m,k;
27
28 int path(int u)
29 {
30 for(int v=1;v<m;v++)
31 {
32 if(edges[u][v]&&!mark[v])
33 {
34 mark[v]=1;
35 if(cy[v]==-1||path(cy[v]))
36 {
37 cx[u]=v;
38 cy[v]=u;
39 return 1;
40 }
41 }
42 }
43 return 0;
44 }
45
46 void match()
47 {
48 int ans=0;
49 memset(cx,0xff,sizeof(cx));
50 memset(cy,0xff,sizeof(cy));
51 for(int u=1;u<n;u++)
52 {
53 if(cx[u]==-1)
54 {
55 memset(mark,0,sizeof(mark));
56 ans+=path(u);
57 }
58 }
59 printf("%d\n",ans);
60 }
61
62
63 int main()
64 {
65 while(scanf("%d",&n)&&n)
66 {
67 scanf("%d%d",&m,&k);
68 memset(edges,0,sizeof(edges));
69 int t,u,v;
70 for(int i=0;i<k;i++)
71 {
72 scanf("%d%d%d",&t,&u,&v);
73 if(u!=0&&v!=0)
74 {
75 edges[u][v]=1;
76 }
77 }
78 match();
79 }
80 return 0;
81 }

Machine Schedule 赤裸裸的二分匹配 二部图中的点覆盖书==匹配数的更多相关文章

  1. poj 1325 Machine Schedule 二分匹配,可以用最大流来做

    题目大意:机器调度问题,同一个任务可以在A,B两台不同的机器上以不同的模式完成.机器的初始模式是mode_0,但从任何模式改变成另一个模式需要重启机器.求完成所有工作所需最少重启次数. ======= ...

  2. hdu 1150 Machine Schedule (经典二分匹配)

    //A组n人 B组m人 //最多有多少人匹配 每人仅仅有匹配一次 # include<stdio.h> # include<string.h> # include<alg ...

  3. hdu 1150 Machine Schedule (二分匹配)

    Machine Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  4. HDU 1150:Machine Schedule(二分匹配,匈牙利算法)

    Machine Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  5. hdu 1150 Machine Schedule(二分匹配,简单匈牙利算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1150 Machine Schedule Time Limit: 2000/1000 MS (Java/ ...

  6. 匈牙利算法模板 hdu 1150 Machine Schedule(二分匹配)

    二分图:https://blog.csdn.net/c20180630/article/details/70175814 https://blog.csdn.net/flynn_curry/artic ...

  7. hdu1150 Machine Schedule 经典二分匹配题目

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1150 很经典的二分题目 就是求最小点覆盖集 二分图最小点覆盖集=最大匹配数 代码: #include& ...

  8. hdu 1150 Machine Schedule 最少点覆盖转化为最大匹配

    Machine Schedule Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...

  9. 二分图最大匹配(匈牙利算法)简介& Example hdu 1150 Machine Schedule

    二分图匹配(匈牙利算法) 1.一个二分图中的最大匹配数等于这个图中的最小点覆盖数 König定理是一个二分图中很重要的定理,它的意思是,一个二分图中的最大匹配数等于这个图中的最小点覆盖数.如果你还不知 ...

随机推荐

  1. tuple必须加上逗号

    tuple支持  空 元组 不加逗号 >>> tup4 = () tuple非空的元组必须加上逗号>>> tup4 = (55,)>>> tup4 ...

  2. linux中级之ansible配置(roles)

    一.roles介绍 什么情况下用到roles? 假如我们现在有3个被管理主机,第一个要配置成httpd,第二个要配置成php服务器,第三个要配置成MySQL服务器.我们如何来定义playbook? 第 ...

  3. 『动善时』JMeter基础 — 25、JMeter参数化补充练习

    目录 1.使用"CSV数据文件设置"组件实现参数化 (1)测试计划中的元件 (2)数据文件内容 (3)线程组元件内容 (4)HTTP信息头管理器组件内容 (5)CSV数据文件设置组 ...

  4. Navigation DialogFragment展示dialog

    如果按照一般fragment的写法: 在nav_config中 <fragment android:id="@+id/fragment_crime_detail" andro ...

  5. BASE理论之思考

    一.什么是BASE理论? BASE理论是对CAP中一致性和可用性权衡的结果,它的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性. BASE理论 ...

  6. Linux系统挂载NFS文件系统

    https://help.aliyun.com/document_detail/90529.html?spm=a2c4g.11186623.6.570.43212f30T5yM4w

  7. CVD-ALD前驱体材料

    CVD-ALD前驱体材料 ALD前驱体源瓶特点是什么   ALD前驱体源瓶(起泡器)用于固态.液态及气态超纯物料类的封装,涉及微正压.常压.中低压的危险化学品,对源瓶的安全性和洁净度提出严苛的要求. ...

  8. Ascend Pytorch算子功能验证

    Ascend Pytorch算子功能验证 编写测试用例 以add算子为例,测试脚本文件命名为:add_testcase.py.以下示例仅为一个简单的用例实现,具体算子的实现,需要根据算子定义进行完整的 ...

  9. GPU上如何优化卷积

    GPU上如何优化卷积 本文将演示如何在TVM中编写高性能卷积实现.我们以平方大小的输入张量和滤波器为例,假设卷积的输入是大批量的.在本例中,使用不同的布局来存储数据,以实现更好的数据局部性.缓冲区布局 ...

  10. java后端知识点梳理——java基础

    面向对象 java三大特性 封装: 将事务封装成一个类,达到解耦,隐藏细节的效果.通过get/set等方法,封装了内部逻辑,并保留了特定的接口与外界联系. 继承: 从一个已知的类中派生出一个新的类,新 ...