【BZOJ 1532】 [POI2005]Kos-Dicing
来源:互联网 发布:在线网络投资可靠吗 编辑:程序博客网 时间:2024/05/20 01:12
1532: [POI2005]Kos-Dicing
Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1150 Solved: 358
[Submit][Status][Discuss]
Description
Dicing 是一个两人玩的游戏,这个游戏在Byteotia非常流行. 甚至人们专门成立了这个游戏的一个俱乐部. 俱乐部的人时常在一起玩这个游戏然后评选出玩得最好的人.现在有一个非常不走运的家伙,他想成为那个玩的最好的人,他现在知道了所有比赛的安排,他想知道,在最好的情况下,他最少只需要赢几场就可以赢得冠军,即他想知道比赛以后赢的最多的那个家伙最少会赢多少场.
Input
第一行两个整数n 和 m, 1 <= n <= 10 000, 0 <= m <= 10 000; n 表示一共有多少个参赛者, m 表示有多少场比赛. 选手从1 到 n编号. 接下来m 行每行两个整数表示该场比赛的两个选手,两个选手可能比赛多场.
Output
第一行表示赢得最多的人最少会赢多少场
Sample Input
4 4
1 2
1 3
1 4
1 2
1 2
1 3
1 4
1 2
Sample Output
1
二分/枚举+网络流
把一场比赛看作资源,分配给获胜者。
我们二分或枚举获胜场数m。
左边一排点表示比赛,右边表示人,s向比赛连流量为1的边,比赛向对战双方连流量为1的边。
每个人向t连流量为m的边,表示限制最多赢m场。
如果满流,说明可行,否则不可行。
我用枚举做的,因为枚举不用重新建图,直接在原图基础上增加流量即可。
#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>#include <cstdlib>#include <queue>#define inf 0x3f3f3f3f#define M 100000+5using namespace std;int s,t,h[M],cur[M],v[M],d[M],n,m;int tot=1;struct edge{int from,to,cap,flow,ne;}E[200005];void Addedge(int from,int to,int cap){E[++tot]=(edge){from,to,cap,0,h[from]};h[from]=tot;E[++tot]=(edge){to,from,0,0,h[to]};h[to]=tot;}bool bfs(){for (int i=s;i<=t;i++)v[i]=0;v[s]=1;d[s]=0;queue<int> q;q.push(s);while (!q.empty()){int x=q.front();q.pop();for (int i=h[x];i;i=E[i].ne){edge e=E[i];if (!v[e.to]&&e.cap>e.flow){v[e.to]=1;d[e.to]=d[x]+1;q.push(e.to);}}}return v[t];}int dfs(int x,int a){if (x==t||!a) return a;int flow=0;for (int &i=cur[x];i;i=E[i].ne){edge &e=E[i];if (d[e.to]!=d[x]+1) continue;int f=dfs(e.to,min(a,e.cap-e.flow));if (f){flow+=f;a-=f;e.flow+=f;E[i^1].flow-=f;if (!a) break;}}return flow;}int main(){ scanf("%d%d",&n,&m);s=0,t=n+m+1;for (int i=1;i<=m;i++){int x,y;scanf("%d%d",&x,&y);Addedge(x,i+n,1);Addedge(y,i+n,1);Addedge(i+n,t,1);}int x=tot;for (int i=1;i<=n;i++)Addedge(s,i,0);int flow=0;for (int i=1;;i++){for (int j=x+1;j<tot;j+=2)E[j].cap+=1;while (bfs()){for (int j=s;j<=t;j++)cur[j]=h[j];flow+=dfs(s,inf);}if (flow==m){cout<<i<<endl;return 0;}}return 0;}
0 0
- 【BZOJ 1532】 [POI2005]Kos-Dicing
- BZOJ 1532 [POI2005]Kos-Dicing
- BZOJ 1532: [POI2005]Kos-Dicing|网络流
- 1532: [POI2005]Kos-Dicing
- bzoj 1532: [POI2005]Kos-Dicing (二分+最大流)
- [POI2005]Kos-Dicing
- bzoj1532 [POI2005]Kos-Dicing
- bzoj1532【POI2005】Kos-Dicing
- 【POI2005】【BZOJ1532】Kos-Dicing
- BZOJ1532: [POI2005]Kos-Dicing
- bzoj1532: [POI2005]Kos-Dicing
- 【bzoj1532】[POI2005]Kos-Dicing
- bzoj1532 [POI2005]Kos-Dicing
- 【BZOJ】【P1532】【POI2005】【Kos-Dicing】【二分+最大流】
- bzoj1532 [POI2005]Kos-Dicing 最大流+二分
- [二分+最大流] BZOJ1532: [POI2005]Kos-Dicing
- BZOJ 1532 POI 2005 Kos-Dicing 最大流+二分
- [BZOJ1532][POI2005]Kos-Dicing(二分+最大流)
- go 速学 - 05 - 流程控制
- 使用js改变DOM样式的三种方式 - 动态创建style标签
- ubuntu 安装php扩展
- 如何创建本地数据库MySQL并连接JDBC
- 阿里巴巴2014实习生笔试题-研发工程师-北京站
- 【BZOJ 1532】 [POI2005]Kos-Dicing
- 《跨界杂谈》开源不是美女不要乱抱
- 面试官的犀利问题是为了知道这些
- 如何屏蔽某个特定的网站
- 第五周项目零:阅读程序(6):static .
- Win7下C盘无法创建文件解决办法
- css在div块添加背景图片为何不显示呢
- 判断点在多边形内算法(射线法)
- 使用 SharedPreferences