poj 3228 二分 最大流 dinic

2021-06-25 11:52:59 字數 912 閱讀 3494

有n座town 每座town都有一定數量gold和倉庫 倉庫的容量是有限的 有m條雙向路徑 求把所有的gold 運到倉庫最小的最大距離是多少

思路:增設乙個超級源點和乙個超級匯點,源點與每乙個gold相連,容量為gold數量,匯點與倉庫相連,容量為倉庫的容量,然後就是二分最小的最大相鄰距離,跑最大流驗證即可。

#include#include#include#include#includeusing namespace std;

#define maxn 222

#define inf 1<<30

int vs,vt;

int dep[maxn];

int map[maxn][maxn];

int gold[maxn],store[maxn];

int dist[maxn][maxn];

void build_map(int limit,int n)

}int bfs()

}return dep[vt]!=-1;

}int dfs(int u,int minx)

dep[u]=-1;

return 0;

}int dinic()

}return ans;

}int main()

for(int i=1;i<=n;i++)scanf("%d",&store[i]);

scanf("%d",&m);

while(m--)

int low=0,high=100010,mid,ans=-1;

while(low<=high)else

low=mid+1;

}if(ans==-1)else

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

}return 0;

}

POJ3228二分最大流

題意 有n個點,每個點有兩個權值,金子數量還有倉庫容量,金子可以存在自己的倉庫裡或者是別的倉庫裡,倉庫和倉庫之間有距離,問所有金子都必須存到庫里最大距離的最小是多少?思路 比較簡單,方法也不唯一,大體可以這樣,先二分,然後用最大流或者匹配.來判斷是不是滿足就行了,我用的是二分最大流,具體 在下面。i...

hdu 3228 最大流 二分

題意 一共有n個城市,一些城市裡有金礦,一些城市裡有倉庫,金礦和倉庫都有乙個容量,有m條邊,每條邊是雙向的,有乙個權值,求將所有金礦裡的儲量都運送到倉庫中,所需要經過的道路中,使最大的權值最小 思路 增設乙個超級源點和乙個超級匯點,源點與每乙個城市相連,容量為 數量,匯點與倉庫相連,容量為倉庫的容量...

poj 2112 最大流 二分

題意 有k臺擠奶機,c頭奶牛,給出這k c個實體間的距離,求出每頭奶牛都到一台擠奶機去,怎麼分配使奶牛走的最大距離最小。用二分列舉最大距離,include include define n 500 define inf 0x3fffffff int map n n dis n gap n head ...