题目来源:

点击打开链接

题目描述:

题目描述

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

很不幸,有时候奶牛会不小心踩到电脑上,农夫约翰的车也可能碾过电脑,这台倒霉的电脑就会坏掉。这意味着这台电脑不能再发送电邮了,于是与这台电脑相关的连接也就不可用了。

有两头奶牛就想:如果我们两个不能互发电邮,至少需要坏掉多少台电脑呢?请编写一个程序为她们计算这个最小值。

以如下网络为例:

1* / 3 - 2*

这张图画的是有2条连接的3台电脑。我们想要在电脑1和2之间传送信息。电脑1与3、2与3直接连通。如果电脑3坏了,电脑1与2便不能互发信息了。

输入输出格式

输入格式:

第一行 四个由空格分隔的整数:N,M,c1,c2.N是电脑总数(1<=N<=100),电脑由1到N编号。M是电脑之间连接的总数(1<=M<=600)。最后的两个整数c1和c2是上述两头奶牛使用的电脑编号。连接没有重复且均为双向的(即如果c1与c2相连,那么c2与c1也相连)。两台电脑之间至多有一条连接。电脑c1和c2不会直接相连。

第2到M+1行 接下来的M行中,每行包含两台直接相连的电脑的编号。

输出格式:

一个整数表示使电脑c1和c2不能互相通信需要坏掉的电脑数目的最小值。

输入输出样例

输入样例#1:  复制

3 2 1 2
1 3
2 3

输出样例#1:  复制

1

解题思路:

这题和1344很像都是转化成最大流来做,因为这题是最小割点数,然后我们要把最小割边转化成最小割点,就要拆点,把一个点拆成两个点,一个点连进边,一个点连出边,然后再这两个点之间连一条边权为1的边,因为一个点只能删一次,记得都要连接反边,比如:a-b,a-a+n-b-b+n-a,其中a-a+n和b-b+n要是边权为一,剩下的边应该是作为联通的,所以边权应该是无穷大,反边为0,接下来就是从起点s+n,到t,跑一遍最大流,其实我还是没懂为什么是s+n,有空理解一下。。。

代码:

#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
#include <cmath>
#include <queue>
#define inf 0x3f3f3f3f
using namespace std;
int h[2000],dis[2000],s,t,n,m,cnt=-1;
struct newt{int to,net,cost;
}e[4000];
inline void addedge(int u,int v,int val)
{e[++cnt].to=v,e[cnt].net=h[u],e[cnt].cost=val,h[u]=cnt;
}
queue<int>q;
inline bool bfs()
{memset(dis,-1,sizeof(dis));q.push(s),dis[s]=0;while(!q.empty()){int u=q.front();q.pop();for(int i=h[u];i;i=e[i].net)if(dis[e[i].to]==-1&&e[i].cost>0)dis[e[i].to]=dis[u]+1,q.push(e[i].to);}return dis[t]!=-1;
}
inline int dfs(int u,int op)
{if(u==t)return op;int flow=0,used=0;for(int i=h[u];i;i=e[i].net){int v=e[i].to;if(dis[v]==dis[u]+1&&e[i].cost>0){used=dfs(v,min(op,e[i].cost));if(!used)continue;flow+=used,op-=used;e[i].cost-=used,e[i^1].cost+=used;if(!op)break;}}if(!flow)dis[u]=-1;return flow;
}
int main()
{int a,b,ans=0;cin>>n>>m>>a>>b;s=a+n;t=b;for(int i=1;i<=n;i++){addedge(i,i+n,1);addedge(i+n,i,0);}for(int i=1;i<=m;i++){cin>>a>>b;addedge(a+n,b,inf);addedge(b,a+n,0);addedge(b+n,a,inf);    addedge(b+n,a,0);}while(bfs())ans+=dfs(s,inf);printf("%d\n",ans);return 0;
}

洛谷P1345 [USACO5.4]奶牛的电信Telecowmunication(最小割点,最大流) 题解相关推荐

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

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

  2. luogu P1345 [USACO5.4]奶牛的电信Telecowmunication(建图技巧 - “割点”模板 、最小割)

    P1345 [USACO5.4]奶牛的电信Telecowmunication 最小割,我们建立一个超级源点和超级汇点,做一下最小割,即可得到通过割边使得整张图变成两个完全不相连的集合的最小花费. 同样 ...

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

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

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

    链接:https://www.luogu.com.cn/problem/P1345 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发 ...

  5. [USACO5.4]奶牛的电信Telecowmunication

    https://www.luogu.org/problemnew/show/P1345 题解: 网络流+最小割 /* *@Author: STZG *@Language: C++ */ #includ ...

  6. 洛谷P1868 饥饿的奶牛 题解

    洛谷P1868 饥饿的奶牛 题解 题目链接:P1868 饥饿的奶牛 题意: 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字. 现用汉语翻译为: 有 NNN 个区间,每个区 ...

  7. 最小割板子题——[USACO5.4]奶牛的电信

    今天邱神给我们讲了图论,还讲了一下网络流算法.自己找了一个洛谷板子题. 题目描述农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存 ...

  8. [洛谷P1856] [USACO5.5]矩形周长Picture

    洛谷题目链接:[USACO5.5]矩形周长Picture 题目背景 墙上贴着许多形状相同的海报.照片.它们的边都是水平和垂直的.每个矩形图片可能部分或全部的覆盖了其他图片.所有矩形合并后的边长称为周长 ...

  9. 洛谷·bzoj·伟大的奶牛聚集Great Cow Gather

    初见安~~这里是传送门:洛谷P2986 & bzoj P1827 题目描述 Bessie is planning the annual Great Cow Gathering for cows ...

最新文章

  1. 非线性方程组牛顿迭代法matlab,matlab实现牛顿迭代法求解非线性方程组
  2. python系统提供构造函数传入参数_[ Python入门教程 ] Python函数定义和使用
  3. python用merge匹配和左连接_左手用R右手Python系列——数据合并与追加
  4. 初探swift语言的学习笔记四(类对象,函数)
  5. 跨站访问如何保证session的正常使用
  6. NES模拟器开发-CPU笔记
  7. ActiveMQ activemq web管理界面介绍
  8. opencv极坐标转换成直角坐标_媲美 PS,用 Python 制作酷炫极坐标全景图
  9. 工作中涉及运维知识点的汇总
  10. 002 辅助框架的设计
  11. Android中Intent/Bundle的通信原理及大小限制(Parcelable原理及与Serializable的区别)
  12. Java面向对象---重写(Override)与重载(Overload)
  13. Angular CLI的简单使用(1)
  14. 部门管理系统_什么是实物资产管理系统?优势有哪些?
  15. awk 使用正则表达式_如何在awk中使用正则表达式
  16. html尾部代码_3分钟短文:Laravel Form,让你不再写 HTML 的好“库”
  17. 中国计算机管理软件学院,中国管理软件学院官方网站
  18. VS调试按钮和运行按钮无法使用
  19. VCPKG安装和使用教程
  20. 简述apache和php工作流程,php工作流程

热门文章

  1. cpy几天爬出密道问题
  2. Spring Boot入门(12):一文吃透Spring Boot整合MyBatis-Plus | 保姆级教程,建议收藏
  3. 东京奥组委公布奥运志愿者和城市志愿者昵称
  4. 剖析Spring源码:加载IOC容器
  5. 为什么显示D盘可用空间不多,但是明明包括隐藏文件也没有用那么多内存?(内含解决方案)
  6. Abaqus RVE单元 周期性边界施加(PBC) 前处理(一) 单元重新编号及Equation方程建立
  7. 43_sql注入绕waf
  8. 寻找三体文明:五环外4.2光年发现液态水,或许另一个宜居星球
  9. 模具工业及其发展趋势
  10. html设置首页到尾页的按钮,AspNetPager里面的按钮(如:首页,上一页 下一页,尾页)如何更换为我想要的图片...