N - Optimal Milking - POJ 2112(二分图多重匹配+Floyd+二分搜索)
#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std; const int MAXN = ;
const int oo = 1e9+; int G[MAXN][MAXN], N, K, C, M;
bool used[MAXN];
struct Link{int link[MAXN], len;}Ly[MAXN]; void Floyd()
{
for(int k=; k<=N; k++)
for(int i=; i<=N; i++)
for(int j=; j<=N; j++)
G[i][j] = min(G[i][j], G[i][k]+G[k][j]);
}
bool Find(int i, int Mid)
{
for(int j=; j<=K; j++)
{
if( G[i][j] <= Mid && !used[j] )
{
used[j] = true; if( Ly[j].len < M )
{
Ly[j].link[ Ly[j].len++ ] = i;
return true;
}
for(int k=; k<Ly[j].len; k++)
{
if( Find( Ly[j].link[k], Mid ) == true )
{
Ly[j].link[k] = i;
return true;
}
}
}
} return false;
}
bool XYL(int Mid)
{
memset(Ly, false, sizeof(Ly)); for(int i=K+; i<=N; i++)
{
memset(used, false, sizeof(used));
if( Find(i, Mid) == false )
return false;
} return true;
} int main()
{
while(scanf("%d%d%d", &K, &C, &M) != EOF)
{
int i, j; N = K+C; for(i=; i<=N; i++)
for(j=; j<=N; j++)
{
scanf("%d", &G[i][j]);
if(i != j && !G[i][j])
G[i][j] = oo;
} Floyd(); int L=, R=oo, ans; while(L <= R)
{
int Mid = (L+R)>>; if( XYL( Mid ) == true )
R = Mid - , ans = Mid;
else
L = Mid + ;
} printf("%d\n", ans);
} return ; }
N - Optimal Milking - POJ 2112(二分图多重匹配+Floyd+二分搜索)的更多相关文章
- Optimal Milking POJ - 2112 (多重最优匹配+最小费用最大流+最大值最小化 + Floyd)
Optimal Milking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 19347 Accepted: 690 ...
- poj 2112(二分+多重匹配)
题目链接:http://poj.org/problem?id=2112 思路:由于要求奶牛走的最远距离的最短路程,显然我们可以二分距离,如果奶牛与挤奶器的距离小于等于limit的情况下,能够满足,则在 ...
- POJ2112:Optimal Milking(Floyd+二分图多重匹配+二分)
Optimal Milking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 20262 Accepted: 7230 ...
- POJ2112 Optimal Milking —— 二分图多重匹配/最大流 + 二分
题目链接:https://vjudge.net/problem/POJ-2112 Optimal Milking Time Limit: 2000MS Memory Limit: 30000K T ...
- 【POJ 1698】Alice's Chance(二分图多重匹配)
http://poj.org/problem?id=1698 电影和日子匹配,电影可以匹配多个日子. 最多有maxw*7个日子. 二分图多重匹配完,检查一下是否每个电影都匹配了要求的日子那么多. #i ...
- poj 2289 Jamie's Contact Groups【二分+最大流】【二分图多重匹配问题】
题目链接:http://poj.org/problem?id=2289 Jamie's Contact Groups Time Limit: 7000MS Memory Limit: 65536K ...
- Poj 2289 Jamie's Contact Groups (二分+二分图多重匹配)
题目链接: Poj 2289 Jamie's Contact Groups 题目描述: 给出n个人的名单和每个人可以被分到的组,问将n个人分到m个组内,并且人数最多的组人数要尽量少,问人数最多的组有多 ...
- kuangbin带你飞 匹配问题 二分匹配 + 二分图多重匹配 + 二分图最大权匹配 + 一般图匹配带花树
二分匹配:二分图的一些性质 二分图又称作二部图,是图论中的一种特殊模型. 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j ...
- <转> 二分图多重匹配问题
在二分图最大匹配中,每个点(不管是X方点还是Y方点)最多只能和一条匹配边相关联,然而,我们经常遇到这种问题,即二分图匹配中一个点可以和多条匹配边相关联,但有上限,或者说,Li表示点i最多可以和多少条匹 ...
随机推荐
- Pyhton开发【第五篇】:Python基础之杂货铺
Python开发[第五篇]:Python基础之杂货铺 字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进 ...
- 【开源java游戏框架libgdx专题】-08-中文显示与绘制
libgdx虽然是由美国人Mario Zechner(即BadlogicGames)写的开源引擎,由于Libgdx底层是用OpenGL实现的,所以Libgdx是可以支持中文的,在libgdx中的汉字都 ...
- Ajax 如何提交集合到mvc后台
1,前端请求如下 var apply = { CompanyName: $("[name='corpName']").val(), ContactUser: $("[na ...
- VB 中ListView 某一列的颜色添加不上去的解决方法
做过VB,对添加某一行中的某一列的背景颜色 ,和文字颜色,来表明某种意义的时候,会有添加不上去的情况 abc = Nothing abc = New ListViewItem.ListViewSubI ...
- (转)MySQL数据库命名规范及约定
一.[操作规范]1. 如无备注,则表中的第一个id字段一定是主键且为自动增长:2. 如无备注,则数值类型的字段请使用UNSIGNED属性:3. 如无备注,排序字段order_id在程序中默认使用降序排 ...
- Swift 提示 error running playground...
创建playground之后,我们将得到一个错误提示,Error running playground: Failed to prepare for communication with playgr ...
- 关于T-SQL重编译那点事,内联函数和表值函数在编译生成执行计划的区别
本文出处:http://www.cnblogs.com/wy123/p/6266724.html 最近在学习 WITH RECOMPILE和OPTION(RECOMPILE)在重编译上的区别的时候,无 ...
- JavaScript--循环--打印星星和99乘法表
1.打印99乘法表 function chengfa(){ //反复调用公式 for(var r=1;r<=9;r++){ for(var i=1,str="";i<= ...
- ubuntu系统mysql.h no such file or directory
在Ubuntu系统中,你已经安装了mysql,即你使用sudo apt-get install mysql-server mysql-client然而使用C语言访问mysql数据库时,却发现出现了如下 ...
- 每日一算法【one】
//有一个数组 {1,2,3,4,5,6,7,8,9,12,13,45,67,89,99,101,111,123,134,565,677} 查找数组中是否有指定的某一个数. /** *------- ...