#include#include#include
#include
#define n 2000
#define m 1000010
#define inf 1<<30
using
namespace
std;
struct
edgeedge[m];
int index[n],d[n],gap[n],e,list[n][510
];void addedge(int
from,int to,int
val)
intsource,des,n,m;
int dfs(int pos,int
flow)
if(d[v]//
找出與pos相連的點的最小標號
} }
if(lv==flow)//
沒有找到增廣路勁,進行標號更新
return flow-lv;
}int sap(int st,int
de)
return
ans;
}void
init()
//n is the number of point
intmain()
list[i][pos]=-1
; }
num=n;
n=n+m+2;//
n是點的數目,一共n+m+2個點。包括源點和匯點
int l=1,r=1000
,mid;
while(l}
for(i=1;i<=m;i++)
addedge(num+i,num+m+1
,mid);
int ans=sap(0,num+m+1
);
//coutl=mid+1,e=0
;
else
r=mid,e=0
; }
printf(
"%d\n
",l);
}return0;
}
建圖方式:
建立乙個超級源點和乙個超級匯點,由源點向每個人(編號從1->n)建立乙個流量為1的邊,從每個人向每個他從屬的組織建立一條流量為1的邊,在由每個組織建立一條流向匯點的邊,我們可以二分列舉組織向匯點邊的流量。
POJ 2289 二分 匈牙利
題意 把 n 個人分成 m 組,給出 n 個人各自可選的組別集合,求一種合法的分配方案,使得人數最多的組的人數最少 分析 最多最少,一般二分跑不了,然後求分配就匈牙利稍微變形就可以了 變形是為了適應二分 include include include include using namespace ...
poj2112 網路流 二分 floyd
描述 fj已將他的k 1 k 30 擠奶機搬到c 1 c 200 奶牛的奶牛牧場。一組不同長度的路徑在奶牛和擠奶機之間執行。擠奶機位置由id號1.k命名 奶牛位置由id號k 1.k c命名。每個擠奶點每天可以 處理 最多m 1 m 15 的奶牛。編寫乙個程式,找到每頭牛到一些擠奶機的任務,以便最遠行...
poj 2455(二分加網路流(dinic))
處理重邊,想不出什麼好的方法。只好用了前向星來寫鄰接表儲存。不是很難不多說什麼了。include include include includeusing namespace std const int maxm 80005 const int inf int max define cc m,v m...