传送门

洛谷

Solution

emmm,直接对于每一个点拆点就好了。

然后边连Inf,点连1,跑最小割就是答案。

代码实现

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=100010,Inf=1e9+10;
  4. int front[N],cnt,s,t,n;
  5. struct node
  6. {
  7. int to,nxt,w;
  8. }e[500010];
  9. queue<int>Q;
  10. int dep[N];
  11. void Add(int u,int v,int w)
  12. {
  13. e[cnt]=(node){v,front[u],w};front[u]=cnt++;
  14. e[cnt]=(node){u,front[v],0};front[v]=cnt++;
  15. }
  16. bool bfs()
  17. {
  18. memset(dep,0,sizeof(dep));
  19. Q.push(s);dep[s]=1;
  20. while(!Q.empty())
  21. {
  22. int u=Q.front();Q.pop();
  23. for(int i=front[u];i!=-1;i=e[i].nxt)
  24. {
  25. int v=e[i].to;
  26. if(!dep[v] && e[i].w)
  27. {
  28. dep[v]=dep[u]+1;Q.push(v);
  29. }
  30. }
  31. }
  32. return dep[t];
  33. }
  34. int dfs(int u,int flow)
  35. {
  36. if(u==t || !flow)return flow;
  37. for(int i=front[u];i!=-1;i=e[i].nxt)
  38. {
  39. int v=e[i].to;
  40. if(dep[v]==dep[u]+1 && e[i].w)
  41. {
  42. int di=dfs(v,min(flow,e[i].w));
  43. if(di)
  44. {
  45. e[i].w-=di;e[i^1].w+=di;
  46. return di;
  47. }
  48. else dep[v]=0;
  49. }
  50. }
  51. return 0;
  52. }
  53. int dinic()
  54. {
  55. int flow=0;
  56. while(bfs())
  57. {
  58. while(int d=dfs(s,Inf))flow+=d;
  59. }
  60. return flow;
  61. }
  62. int m;
  63. int main()
  64. {
  65. memset(front,-1,sizeof(front));
  66. scanf("%d%d%d%d", &n,&m,&s,&t);
  67. t+=n;
  68. for(int i=1;i<=n;i++)
  69. if(i!=s && (i!=t-n))Add(i,i+n,1);
  70. else Add(i,i+n,Inf);
  71. while(m--)
  72. {
  73. int u,v;scanf("%d%d",&u,&v);
  74. Add(u+n,v,Inf);
  75. Add(v+n,u,Inf);
  76. }
  77. printf("%d\n",dinic());
  78. return 0;
  79. }

【洛谷1345】 [USACO5.4]奶牛的电信(最小割)的更多相关文章

  1. 洛谷P1345 [USACO5.4]奶牛的电信 [最小割]

    题目传送门 奶牛的电信 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,..., ...

  2. 洛谷1345 [Usaco5.4]奶牛的电信

    题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...

  3. 洛谷1345 [USACO5.4]奶牛的电信Telecowmunication

    原题链接 最小割点数转换成最小割边数的模板题(不过这数据好小). 每个点拆成两个点,连一条容量为\(1\)的边,原图的边容量定为\(+\infty\),然后跑最大流即可. 这里用的是\(Dinic\) ...

  4. 洛谷P1345 [USACO5.4]奶牛的电信Telecowmunication【最小割】分析+题解代码

    洛谷P1345 [USACO5.4]奶牛的电信Telecowmunication[最小割]分析+题解代码 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流. ...

  5. 洛谷——P1345 [USACO5.4]奶牛的电信Telecowmunication

    P1345 [USACO5.4]奶牛的电信Telecowmunication 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮 ...

  6. 洛谷P13445 [USACO5.4]奶牛的电信Telecowmunication(网络流)

    题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...

  7. 洛谷P1345 [USACO5.4]奶牛的电信(最小割)

    题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...

  8. 洛谷P1345 [USACO5.4]奶牛的电信Telecowmunication(最小割)

    题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...

  9. 洛谷 P1345 [USACO5.4]奶牛的电信Telecowmunication

    题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...

  10. 洛谷P1345 [USACO5.4]奶牛的电信Telecowmunication

    题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...

随机推荐

  1. mbedtls 入门

    mbedtls 入门 https://segmentfault.com/a/1190000012007117 ARM mbedtls使开发人员可以非常轻松地在嵌入式产品中加入加密和SSL/TLS功能. ...

  2. 2.JVM、JRE、JDK之间的关系

    诠释一. JDK(java development kit) JDK是Java开发工具包,是整个Java的核心,包括了Java运行环境JRE.Java工具和Java基础类库. JRE(java run ...

  3. 复杂度n求数组的第K大值

    利用快速排序的方法进行: #include<iostream> using namespace std; int test() { ; return a; } int quickSort( ...

  4. 学习前端第二天之css层叠样式

    一.设置样式公式 选择器 {属性:值:} 二.font 设置四大操作 font-size:字体大小 (以像素为单位) font-weight:字体粗细 font-family:字体    ( 可直接跟 ...

  5. Nginx如何配置禁止访问某个目录

    location ~* \.(txt|doc)${ root /data/www/wwwroot/test; deny all; }

  6. SpringCloud之RabbitMQ安装

    本文介绍Linux以及MAC OS下的RabbitMQ安装及配置: 一.Linux环境下的RabbitMQ安装(CentOS) 1.安装ErLang Erlang(['ə:læŋ])是一种通用的面向并 ...

  7. 【uoj#94】【集训队互测2015】胡策的统计(集合幂级数)

    题目传送门:http://uoj.ac/problem/94 这是一道集合幂级数的入门题目.我们先考虑求出每个点集的连通生成子图个数,记为$g_S$,再记$h_S$为点集$S$的生成子图个数,容易发现 ...

  8. linux 下安装 jdk1.7

    1.官网 下载jdk7版本 地址: http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-jav ...

  9. linux数码管驱动程序和应用程序

  10. 阿里云服务执行mysql_install_db报错

    问题描述:阿里云服务执行mysql_install_db报错解决方案:安装autoconf库(yum -y install autoconf)然后在执行:mysql_install_db就会出现这样, ...