POJ PKU 2391 最大流 二分 拆点
(2010-08-21 18:06:30)
标签:
poj2391最大流二分拆点it |
分类: 网络流 |
题目描述:
f个地区。已知各个地区之间的行走时间。
每个地区i有两个属性:
这个地区当前牛的个数,下雨的时候这个地区实际能够容纳牛的个数。
问至少需要多少时间,使所有的牛在下雨的时候都能够被容纳。
解题报告:
最大流,二分,拆点。
f个地区,每个地区i拆成i和i + f
源点s连接1~f,容量是第一个属性。
f+1~2f 连接t,容量是第二个属性。
二分至少需要的时间mid。
如果a地区到b地区的时间小于等于mid。
连接a到b+f。容量无穷大。
如果最大流等于牛的总数,mid值合法。
代码如下:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
#define Max 0x1fffffff
#define size 500
struct edge{int from, to, val, next;}e[140000];
int v[size], que[size], dis[size], cnt, cur[size];
void insert(int from, int to, int va)
{
}
bool bfs(int n, int s, int t)
{
}
int Dinic(int n, int s, int t)
{