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 ...
随机推荐
- 为什么会有 AtomicReference ?
我把自己以往的文章汇总成为了 Github ,欢迎各位大佬 star https://github.com/crisxuan/bestJavaer 我们之前了解过了 AtomicInteger.Ato ...
- 面试时通过volatile关键字,全面展示线程内存模型的能力
面试时,面试官经常会通过volatile关键字来考核候选人在多线程方面的能力,一旦被问题此类问题,大家可以通过如下的步骤全面这方面的能力. 1 首先通过内存模型说明volatile关键字的作用 ...
- Databricks 第8篇:把Azure Data Lake Storage Gen2 (ADLS Gen 2)挂载到DBFS
DBFS使用dbutils实现存储服务的装载(mount.挂载),用户可以把Azure Data Lake Storage Gen2和Azure Blob Storage 账户装载到DBFS中.mou ...
- Android根据pdf模板生成pdf文件
我们需要生成一些固定格式的pdf文件或者一些报表数据,那么我们可以用 iText包去做. 需要包含的jar包:iText-5.0.6.jar iTextAsian.jar ,怎样jar包导入工程 ...
- Linux磁盘的分区操作
1.Linux磁盘分区介绍 Linux磁盘分区主要有两种方式,一种是MBR,另一种是GPT.根据Linux磁盘分的大小,来选择一种分区方式. --MBR分区格式:最大支持 2 TB 的磁盘.--GPT ...
- Maven 基础详解
一.编写pom.xml文件 Maven项目的核心是pom.xml.POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等等. ...
- 一、JavaScript实现AJAX(只需四步)
-----------------------------------------------一.JavaScript实现AJAX(只需四步)----------------------------- ...
- 进程通信类型 管道是Linux支持的最初Unix IPC形式之一 命名管道 匿名管道
管道 Linux环境进程间通信(一) https://www.ibm.com/developerworks/cn/linux/l-ipc/part1/index.html 管道及有名管道 郑彦兴200 ...
- string知识
因为历史原因以及为了与C语言兼容,字符串字面值与标准库string类型不是同一种类型.这一点很容易引起混乱,编程时一定要注意区分字符串字面值和string数据类型的使用,这很重要. 额~~~C字符串是 ...
- vim自动添加C C++ sh文件头
set foldenable set foldmethod=manual set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936 set ...