poj2112二分 最大流

2022-09-03 16:12:13 字數 1113 閱讀 8801

跟上題一樣,因為一開始那份模板用的少,總懷疑那份sap模板出錯了,今天換了乙個模板做另外一題很像的題。(先前的模板不能處理過大的數)

事實證明我過程中處理錯了,好吧,先放著,校賽完在來找錯了。

最後在錯誤在建圖的過程中,嚴格建圖過程,因為增加了牛與牛和機器與機器的距離,導致求最大流結果時出錯。

**:

#include#include#include#define maxn 405

#define inf 1e8

#define min(a,b) (ab?a:b)

using namespace std;

struct edge

e[200000];

int head[maxn],ecnt;

int gap[maxn],cur[maxn],pre[maxn],dis[maxn];

int map[300][300];

int l,r,mid;

int n,m,scr,sink,vn,num;

int k,c1,m;

void floyd()

}}void insert(int u,int v,int w)

int sap(int s,int t,int n)//核心**(模版)

gap[s]=n;

bool flag;

while(dis[s]0&&dis[u]==dis[v]+1)

aug=inf;

}break;//找到一條就退出}}

if(flag) continue;

int mindis=n;

for(i=head[u];i!=-1;i=e[i].next)

int main()

}scr=0;sink=k+c1+1;vn=sink+1;

floyd();

/*for(int i=1;i<=k+c1;i++)

l=0;r=0;mid=0;

r=tmp;

//cout<>1;

if(judge(mid))   //大了

else l=mid+1;

//cout<}

printf("%d\n",r);

}return 0;

}

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頭牛每頭...

POJ 2112 二分 最大流

題意 有k個牛奶機跟c頭牛。他們之間有路相連,農民想讓每個牛能到其中乙個牛奶機,又想讓走路最遠的牛走得最小。題解 求最大值最小,不出意外就是二分了 由於要限制總的路徑長度,就不能對每條邊限制了,於是先floyd求最短路,再二分最長路即可 不連大於二分值的路徑,連小於等於二分值的路徑,做最大流就好了 ...