POJ_2112 二分图多重匹配
题意:
//题意就是给你k个挤奶池和c头牛,每个挤奶池最多可以来m头牛,而且每头牛距离这k这挤奶池
//有一定的距离,题目上给出k+c的矩阵,每一行代表某一个物品距离其他物品的位置
//这里要注意给出的某头牛和某个挤奶池的距离有可能不是最短的,所以这里要用最短路
//来找出来某个物品到其他物品的最小距离,题目上要求出来在满足每头牛都能到达挤奶池的情况下
//使所有牛中到达挤奶池中的最大值尽量小
//全部处理完之后这就是一个二分图多重匹配问题
代码:
1 #include<algorithm>
2 #include<string.h>
3 #include<stdio.h>
4 const int INF=0x3f3f3f3f;
5 using namespace std;
6 int n,m,k;
7 int g[300][300],mpp[300][300];
8 int link[35][20],sum[35],used[35];
9 void floy()
10 {
11 for(int k=1; k<=n+m; k++)
12 {
13 for(int i=1; i<=n+m; i++)
14 {
15 for(int j=1; j<=n+m; j++)
16 {
17 if(g[i][j]>g[i][k]+g[k][j])
18 g[i][j]=g[i][k]+g[k][j];
19 }
20 }
21 }
22 }
23 int dfs_solve(int u)
24 {
25 for(int i=1; i<=n; i++)
26 {
27 if(mpp[u][i]&&!used[i])
28 {
29 used[i]=1;
30 if(link[i][0]<sum[i])
31 {
32 link[i][++link[i][0]]=u;
33 return true;
34 }
35 for(int j=1; j<=sum[i]; j++)
36 {
37 if(dfs_solve(link[i][j]))
38 {
39 link[i][j]=u;
40 return true;
41 }
42 }
43 }
44 }
45 return false;
46 }
47 int hungran()
48 {
49 int ans=0;
50 for(int i=1; i<=n; i++)
51 link[i][0]=0;
52 for(int i=1; i<=n; i++)
53 sum[i]=k;
54 for(int i=n+1; i<=n+m; i++)
55 {
56 memset(used,0,sizeof(used));
57 if(dfs_solve(i)) ans++;
58 }
59 return ans==m;
60 }
61 int main()
62 {
63 while(~scanf("%d%d%d",&n,&m,&k))
64 {
65 for(int i=1; i<=n+m; i++)
66 {
67 for(int j=1; j<=n+m; j++)
68 {
69 scanf("%d",&g[i][j]);
70 if(g[i][j]==0)
71 g[i][j]=INF;
72 }
73 }
74 for(int i=1; i<=n+m; i++)
75 g[i][i]=0;
76 floy();
77 int l=1,r=INF,mid;//题意明明是200是最大距离,可是这里换到210还是错。
78 //r还是得开到inf......
79 while(l<=r)
80 {
81 memset(mpp,0,sizeof(mpp));
82 mid=(l+r)>>1;
83 for(int i=n+1; i<=n+m; i++)
84 {
85 for(int j=1; j<=n; j++)
86 {
87 if(g[i][j]<=mid)
88 mpp[i][j]=1;
89 }
90 }
91 if(hungran())
92 r=mid-1;
93 else
94 l=mid+1;
95 }
96 printf("%d\n",l);
97 }
98 }
POJ_2112 二分图多重匹配的更多相关文章
- hihoCoder 1393 网络流三·二分图多重匹配(Dinic求二分图最大多重匹配)
#1393 : 网络流三·二分图多重匹配 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 学校的秋季运动会即将开始,为了决定参赛人员,各个班又开始忙碌起来. 小Hi和小H ...
- 【POJ 1698】Alice's Chance(二分图多重匹配)
http://poj.org/problem?id=1698 电影和日子匹配,电影可以匹配多个日子. 最多有maxw*7个日子. 二分图多重匹配完,检查一下是否每个电影都匹配了要求的日子那么多. #i ...
- 稳定的奶牛分配 && 二分图多重匹配+二分答案
题意: 农夫约翰有N(1<=N<=1000)只奶牛,每只奶牛住在B(1<=B<=20)个奶牛棚中的一个.当然,奶牛棚的容量有限.有些奶牛对它现在住的奶牛棚很满意,有些就不太满意 ...
- hiho 第117周 二分图多重匹配,网络流解决
描述 学校的秋季运动会即将开始,为了决定参赛人员,各个班又开始忙碌起来. 小Hi和小Ho作为班上的班干部,统计分配比赛选手的重任也自然交到了他们手上. 已知小Hi和小Ho所在的班级一共有N名学生(包含 ...
- 【网络流24题】No.7 试题库问题 (最大流,二分图多重匹配)
[题意] 假设一个试题库中有 n 道试题. 每道试题都标明了所属类别. 同一道题可能有多个类别属性.现要从题库中抽取 m 道题组成试卷.并要求试卷包含指定类型的试题. 试设计一个满足要求的组卷算法. ...
- POJ2584 T-Shirt Gumbo【二分图多重匹配】
题目链接: id=2584">http://poj.org/problem?id=2584 题目大意: 如今有5种型号(S.M.L.X.T)的衣服要发放给N个參赛队员.给出每一个參赛者 ...
- 网络流24题 第五题 - PowerOJ1740 CodeVS1905 圆桌问题 二分图多重匹配 网络最大流
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - PowerOJ1740 - 有SPJ - 推荐 题目传送门 - CodeVS1905 - 无SPJ - 0% ...
- [HihoCoder1393]网络流三·二分图多重匹配
题目大意: 班级有$N$名学生,运动会有$M$项不同的比赛,第$i$项比赛每个班需要派出$m_i$名选手参加,编号为i的学生最多同时参加给定的$b_i$项比赛中的任意$a_i$项比赛.根据统计的结果, ...
- hdu3605 Escape 二分图多重匹配/最大流
2012 If this is the end of the world how to do? I do not know how. But now scientists have found tha ...
随机推荐
- FlatBuffers使用小结
最近做一个Android APP,由于离线业务需求,需要在启动APP时候同步大量数据到APP上,遇到了JSON性能瓶颈.从下方的图片中可以看出,当使用 json 传输数据,在解析json的时候会产生大 ...
- 【Linux】linux rinetd 端口转发部署
linux下简单好用的工具rinetd,实现端口映射/转发/重定向 Rinetd是为在一个Unix和Linux操作系统中为重定向传输控制协议(TCP)连接的一个工具.Rinetd是单一过程的服务器,它 ...
- Java调用Linux命令执行
调用方式 Java调用linux命令执行的方式有两种,一种是直接调用linux命令,一种是将linux命令写到.sh脚本中,然后调用脚本执行. 详细说明 直接调用:使用java中lang包下面的Run ...
- centos7.4使用filrewalld打开关闭防火墙与端口
1.firewalld的基本使用启动: systemctl start firewalld关闭: systemctl stop firewalld查看状态: systemctl status fire ...
- Java高并发与多线程(四)-----锁
今天,我们开始Java高并发与多线程的第四篇,锁. 之前的三篇,基本上都是在讲一些概念性和基础性的东西,东西有点零碎,但是像文科科目一样,记住就好了. 但是本篇是高并发里面真正的基石,需要大量的理解和 ...
- 1.5V升3V芯片和电路图,DC-DC升压IC
1.5V升3V的升压芯片,3V给LED供电,或者单片机模块供电等. PW5200A工作频率为1.4MHZ.轻载时自动PWM/PFM模式切换,提高效率. PW5200A能够提供2.5V和5V之间的可调输 ...
- Java中,那些关于String和字符串常量池你不得不知道的东西
老套的笔试题 在一些老套的笔试题中,会要你判断s1==s2为false还是true,s1.equals(s2)为false还是true. String s1 = new String("xy ...
- ORB-SLAM2-tracking线程
tracking线程 Tracking线程的主要工作是从图像中提取ORB特征,根据上一帧进行姿态估计或者进行通过全局重定位初始化位姿,然后跟踪已经重建的局部地图,优化位姿,再根据一些规则确定新的关键帧 ...
- 前端面试准备笔记之JavaScript(01)
1.1 typeof 能判断哪些类型? typeof可以识别所有的值类型 typeof可以识别函数 //function typeof可以判断是否是引用类型(不可以再细分) //object 1.2 ...
- NodeJS连接MongoDB数据库
NodeJS连接MongoDB数据库 连接数据库的js文件[我将其命名为(connect.js)] // 引入mongoose第三方模块 const mongoose = require('mongo ...