[POI2005]Kos-Dicing

Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 1835  Solved: 661
[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

Sample Output

1

HINT

 

一场比赛向x,y各连流量为1的边,然后二分z,所有点向T连z的边,然后最大流一

下,调整一下就好了。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cstring>
  5. #define inf 0x7fffffff
  6. using namespace std;
  7. inline int read()
  8. {
  9. int x=,f=;char ch=getchar();
  10. while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
  11. while(ch>=''&&ch<=''){x*=;x+=ch-'';ch=getchar();}
  12. return x*f;
  13. }
  14. int T;
  15. int n,m,cnt,ans,x[],y[];
  16. int head[],h[],q[],cur[];
  17. struct data{int to,next,v;}e[];
  18. void ins(int u,int v,int w)
  19. {e[++cnt].to=v;e[cnt].next=head[u];e[cnt].v=w;head[u]=cnt;}
  20. void insert(int u,int v,int w)
  21. {ins(u,v,w);ins(v,u,);}
  22. bool bfs()
  23. {
  24. int t=,w=;
  25. for(int i=;i<=T;i++)h[i]=-;
  26. q[]=;h[]=;
  27. while(t!=w)
  28. {
  29. int now=q[t];t++;
  30. for(int i=head[now];i;i=e[i].next)
  31. if(e[i].v&&h[e[i].to]==-)
  32. {
  33. h[e[i].to]=h[now]+;
  34. q[w++]=e[i].to;
  35. }
  36. }
  37. if(h[T]==-)return ;
  38. return ;
  39. }
  40. int dfs(int x,int f)
  41. {
  42. if(x==T)return f;
  43. int w,used=;
  44. for(int i=cur[x];i;i=e[i].next)
  45. {
  46. if(e[i].v&&h[e[i].to]==h[x]+)
  47. {
  48. w=f-used;
  49. w=dfs(e[i].to,min(e[i].v,w));
  50. e[i].v-=w;
  51. if(e[i].v)cur[x]=i;
  52. e[i^].v+=w;
  53. used+=w;if(used==f)return f;
  54. }
  55. }
  56. if(!used)h[x]=-;
  57. return used;
  58. }
  59. void dinic()
  60. {while(bfs()){for(int i=;i<=T;i++)cur[i]=head[i];ans+=dfs(,inf);}}
  61. void build(int v)
  62. {
  63. cnt=;ans=;
  64. memset(head,,sizeof(head));
  65. for(int i=;i<=n;i++)
  66. insert(i,T,v);
  67. for(int i=;i<=m;i++)
  68. {
  69. insert(,i+n,);
  70. insert(i+n,x[i],);
  71. insert(i+n,y[i],);
  72. }
  73. }
  74. int main()
  75. {
  76. n=read();m=read();T=n+m+;
  77. for(int i=;i<=m;i++)
  78. x[i]=read(),y[i]=read();
  79. int l=,r=;
  80. while(l<=r)
  81. {
  82. int mid=(l+r)>>;
  83. build(mid);
  84. dinic();
  85. if(ans==m)r=mid-;
  86. else l=mid+;
  87. }
  88. printf("%d",l);
  89. }

bzoj [POI2005]Kos-Dicing 二分+网络流的更多相关文章

  1. BZOJ_1532_[POI2005]Kos-Dicing_二分+网络流

    BZOJ_1532_[POI2005]Kos-Dicing_二分+网络流 Description Dicing 是一个两人玩的游戏,这个游戏在Byteotia非常流行. 甚至人们专门成立了这个游戏的一 ...

  2. 【bzoj1532】[POI2005]Kos-Dicing 二分+网络流最大流

    题目描述 Dicing 是一个两人玩的游戏,这个游戏在Byteotia非常流行. 甚至人们专门成立了这个游戏的一个俱乐部. 俱乐部的人时常在一起玩这个游戏然后评选出玩得最好的人.现在有一个非常不走运的 ...

  3. BZOJ 3130: [Sdoi2013]费用流 网络流+二分

    3130: [Sdoi2013]费用流 Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1230  Solved: ...

  4. hihoCoder 1389 Sewage Treatment 【二分+网络流+优化】 (ACM-ICPC国际大学生程序设计竞赛北京赛区(2016)网络赛)

    #1389 : Sewage Treatment 时间限制:2000ms 单点时限:2000ms 内存限制:256MB 描述 After years of suffering, people coul ...

  5. POJ 2455 Secret Milking Machine(搜索-二分,网络流-最大流)

    Secret Milking Machine Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9658   Accepted: ...

  6. BZOJ_3993_[SDOI2015]星际战争_二分+网络流

    BZOJ_3993_[SDOI2015]星际战争_二分+网络流 Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进 ...

  7. POJ 2711 Leapin' Lizards / HDU 2732 Leapin' Lizards / BZOJ 1066 [SCOI2007]蜥蜴(网络流,最大流)

    POJ 2711 Leapin' Lizards / HDU 2732 Leapin' Lizards / BZOJ 1066 [SCOI2007]蜥蜴(网络流,最大流) Description Yo ...

  8. 【bzoj3130】[Sdoi2013]费用流 二分+网络流最大流

    题目描述 Alice和Bob做游戏,给出一张有向图表示运输网络,Alice先给Bob一种最大流方案,然后Bob在所有边上分配总和等于P的非负费用.Alice希望总费用尽量小,而Bob希望总费用尽量大. ...

  9. 【bzoj1822】[JSOI2010]Frozen Nova 冷冻波 计算几何+二分+网络流最大流

    题目描述 WJJ喜欢“魔兽争霸”这个游戏.在游戏中,巫妖是一种强大的英雄,它的技能Frozen Nova每次可以杀死一个小精灵.我们认为,巫妖和小精灵都可以看成是平面上的点. 当巫妖和小精灵之间的直线 ...

  10. 【bzoj1733】[Usaco2005 feb]Secret Milking Machine 神秘的挤奶机 二分+网络流最大流

    题目描述 Farmer John is constructing a new milking machine and wishes to keep it secret as long as possi ...

随机推荐

  1. Java进阶知识点: 枚举值

    Java进阶知识点1:白捡的扩展性 - 枚举值也是对象   一.背景 枚举经常被大家用来储存一组有限个数的候选常量.比如下面定义了一组常见数据库类型: public enum DatabaseType ...

  2. 关于TensorFlow的GPU设置

    摘自:https://blog.csdn.net/byron123456sfsfsfa/article/details/79811286 1.  在使用GPU版的TensorFlow跑程序的时候,如果 ...

  3. 理解Python中的__builtin__和__builtins__

    以Python 2.7为例,__builtin__模块和__builtins__模块的作用在很多情况下是相同的. 但是,在Python 3+中,__builtin__模块被命名为builtins. 所 ...

  4. C# 生成行和列

    private DataTable GetListBind() { DataTable dt = new DataTable(); try { dt.Columns.Add("1" ...

  5. php 安全方面面试题

    1 MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化? a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率.b. 选择合适的表字段数据类型和存储 ...

  6. hive创建外部表

    Create [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] ...

  7. Python中函数的参数-arguments

    归纳起来,Python中函数的定义形式和调用形式主要有如下几种形式: # 函数的定义形式 def func(name) # 匹配positional参数或者keyword参数 def func(nam ...

  8. ueditor百度编辑器的赋值方法

    示例: http://ueditor.baidu.com/website/onlinedemo.html 引用代码: window.UMEDITOR_HOME_URL = $CONFIG['domai ...

  9. android平台蓝牙编程(转)

    http://blog.csdn.net/pwei007/article/details/6015907 Android平台支持蓝牙网络协议栈,实现蓝牙设备之间数据的无线传输. 本文档描述了怎样利用a ...

  10. 哈希表 STL map

    计数排序时我们使用一个数组来记录出现的数字的次数,而当数据范围太大时,无法建立一个那么大地数组(而且可能空间利用率很低,太浪费),此时可以改用hash table . binary search tr ...