題意:給一堆點,一部分是牛,一部分是機器,每頭牛必須要走到乙個機器,每個點之間有距離,要求每頭牛都能找得到一台機器(機器有最大容量)的情況下,走的最遠的牛距離最小
題解:二分答案,小於該距離的邊才能加進來,先用floyd預處理距離,然後跑最大流看滿不滿足條件
#include#includeview code#include
#include
#include
#include
#include
#include
#include
#include
#include
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define pii pair#define c 0.5772156649
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
using
namespace
std;
const
double g=10.0,eps=1e-12
;const
int n=400+10,maxn=100000+10,inf=0x3f3f3f3f
;struct
edgee[maxn
<<2
];int
cnt,head[n];
intdis[n];
intd[n][n];
void add(int u,int v,int
c)bool bfs(int s,int
t) }
}return0;
}int dfs(int x,int mx,int
t) }
if(!flow)dis[x]=-2
;
return
flow;
}int maxflow(int s,int
t)
return
ans;
}void
init()
intn,m,k;
bool ok(int x,int s,int
t)int
main()
}for(int i=1;i<=n+m;i++)
for(int j=1;j<= n+m;j++)
for(int k=1;k<=n+m;k++)
d[j][k]=min(d[j][k],d[j][i]+d[i][k]);
/*for(int i=1+n;i<=n+m;i++)
printf(
"%d\n
",r);
}return0;
}/********************
*******************
*/
POJ 2112 最大流 最短路
poj 2112 最大流 最短路 題意 給定k個 器和c頭奶牛,每個 器每天最多擠m頭奶牛 器和奶牛稱為 實物 再給每個實物之間的距離。問擠完所有奶牛,奶牛所需走最短的距離。分析 用floyd求出 實物 之間的最短距離,求最大流,二分找最短距離。include include include usi...
poj 2112 最大流 二分
題意 有k臺擠奶機,c頭奶牛,給出這k c個實體間的距離,求出每頭奶牛都到一台擠奶機去,怎麼分配使奶牛走的最大距離最小。用二分列舉最大距離,include include define n 500 define inf 0x3fffffff int map n n dis n gap n head ...
poj2112 二分最大流
題目 輸入k c m 代表有k臺機器 c頭牛 每台機器最多服務m頭牛 k臺機器編號為1 k。c頭牛編號為k 1 k c 下面是乙個 k c k c 的矩陣 map i j 代表從編號為i的實體到編號為j的實體的直接距離 問你要讓每頭牛都被機器服務 這c頭牛中 走的最遠距離的最小值 就是說這c頭牛每頭...