題意:通訊錄中有n個人,想分m個組,每個人有可以分到的組,問怎麼分使得每組最多人數最少。
分析:最大流,二分每組最多的人數。新加源點s,連每個人,流量為1;若人能放m組,則連n人至m組,流量為1;每組連匯點t,流量為二分的最多人數。注意每個組最多n人,所以r初值設為n。。。
//ac,dinic超時,sap 500ms+ac
#include#includeusing namespace std;
const int maxn=2100;
const int maxm=2100000;
const int maxint=0x3fffffff;
struct edge
e[maxm];
int s,t,n,m,edgenum,first[maxn],dist[maxn],q[maxn],pre[maxn],now[maxn],cur[maxn],cnt[maxn],g[1100][1100];
void addedge(int u,int v,int w)
int sap()
} dist[i]=min+1;
cnt[dist[i]]++;
if(i!=s)
}return tot;
}/*int min(int a,int b)
} }if(dist[t]!=-1) return true;
return false;
}int dfs(int t)
return j;
}int dinic()
return sum;
}*/int main()
} l=1,r=n+1;//每組最多n個人
while(l<=r)
printf("%d\n",r+1);
} return 0;
}
SAP 演算法 求最大流 poj 3189 pku
include using namespace std int const maxn 1100 int const maxm 50010 int const oo 1234567890 typedef struct edge t edge t e maxm int first maxn int di...
模板 網路最大流 最大流
給出乙個網路圖,以及其源點和匯點,求出其網路最大流。in put role presentation inp utin put4 5 4 3 4 2 30 4 3 20 2 3 20 2 1 30 1 3 40ou tput role presentation out puto utpu t50最大...
模板 網路最大流 最大流
給出乙個網路圖,以及其源點和匯點,求出其網路最大流。in put role presentation inp utin put4 5 4 3 4 2 30 4 3 20 2 3 20 2 1 30 1 3 40ou tput role presentation out puto utpu t50最大...