链接:https://www.luogu.com.cn/problem/P1345

题目描述

农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流。这些机器用如下的方式发送电邮:如果存在一个由 cc 台电脑组成的序列a_1,a_2,\cdots ,a_ca1​,a2​,⋯,ac​,且 a_1a1​ 与 a_2a2​ 相连,a_2a2​ 与 a_3a3​ 相连,等等。那么电脑 a_1a1​ 和 a_cac​ 就可以互发电邮。

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

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

以如下网络为例:

   1*/3 - 2*

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

输入格式

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

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

输出格式

一行,一个整数,表示使电脑 c_1c1​ 和 c_2c2​ 不能互相通信需要坏掉的电脑数目的最小值。

输入输出样例

输入 #1复制

3 2 1 2
1 3
2 3

输出 #1复制

1

说明/提示

对于 100\%100% 的数据:1\le N \le 1001≤N≤100,1\le M \le 6001≤M≤600。

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=200000+10,M=1e4+5,mod=1e9+7;
ll n,m,s,t,h[N],cur[N],cnt=1,vis[N];
struct node{ll to,nt,w;
}e[N];
void add(ll u,ll v,ll w)
{e[++cnt]={v,h[u],w};h[u]=cnt;
}
queue<ll>q;
bool bfs()
{memset(vis,0,sizeof(vis));vis[s]=1;q.push(s);while(!q.empty()){ll u=q.front();q.pop();cur[u]=h[u];for(ll i=h[u];i;i=e[i].nt){ll v=e[i].to,w=e[i].w;if(w&&!vis[v]){vis[v]=vis[u]+1;q.push(v);}}}return vis[t];}
ll dfs(ll u,ll flow)
{if(u==t)return flow;ll res=flow;for(ll i=cur[u];i;i=e[i].nt){ll v=e[i].to,w=e[i].w;if(w&&vis[u]+1==vis[v]){ll now=dfs(v,min(res,w));if(!now)vis[v]=1;else{e[i].w-=now;e[i^1].w+=now;res-=now;}}if(!res)return flow;}return flow-res;
}
ll T,x;
int main()
{//cin>>T;//while(T--){cin>>n>>m>>s>>t;s+=n;for(int i=1;i<=n;i++){add(i,i+n,1);add(i+n,i,0);}for(int i=1;i<=m;i++){ll u,v,w;cin>>u>>v;//>>w;add(u+n,v,0x7fffffff);add(v+n,u,0x7fffffff);add(u,v+n,0);add(v,u+n,0);}ll ans=0;while(bfs()){ans+=dfs(s,0x7fffffff);}cout<<ans<<endl;}return 0;
}

P1345 [USACO5.4]奶牛的电信Telecowmunication相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. 【洛谷 1345】 奶牛的电信

    以前刷试炼场时根本不会的 现在 一眼最小割! #include <cstdio> #include <cstring> #include <algorithm> # ...

  8. 2019.2-2019.3 TO-DO LIST

    DP P2723 丑数 Humble Numbers(完成时间:2019.3.1) P2725 邮票 Stamps(完成时间:2019.3.1) P1021 邮票面值设计(完成时间:2019.3.1) ...

  9. [图论]---[网络流]---最小点割数/最小点割集

    最小点割数 给定一个无向图,源点S和汇点T,问最少删除几个结点能使S和T不连通. 使S和T不连通的算法我们知道有最小割,但是最小割是将边割掉,所以我们需要将求割点转化为求割边. 我们知道如果在原图去掉 ...

最新文章

  1. 图灵访谈 | 鹅厂专家李成熙:做好规划,才能事半功倍
  2. mySql中Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的问题
  3. Android细节问题总结(二)
  4. elisa标准曲线怎么做_ELISA标准曲线制作
  5. java不需要返回数据时_从Java方法返回时,BigDecimal不保持实际值
  6. 第二章:Improving On User Commands--22.显示不同时区的时间
  7. 工作失职的处理决定_员工工作失误处罚处理决定书范本(3篇)
  8. 大班音乐机器人反思_幼儿园大班音乐律动教案《伦敦桥》含反思
  9. VS2008超有用的快捷键
  10. 悟透JavaScript--可爱与智慧并存,灵感与诙谐共生
  11. Jenkins的Windows Slave的配置
  12. IDEA 修改文件编码
  13. 计算机教师中级职称个人总结,职称个人总结
  14. 关于texlive2021安装,一直卡在安装界面怎么回事?
  15. 小米手机遇到卡顿问题怎么抓当时的日志
  16. 网络流量监控器mrtg全攻略
  17. 个人品牌 比漂亮简历更重要
  18. 怎么用计算机求logo,pclogo小海龟里帮我设计一个复杂图
  19. Linux简单介绍及常用命令
  20. 安川驱动器维修SGD7S-550A00A002/B202

热门文章

  1. Java线程池几个参数的理解
  2. java获取请求本机ip地址
  3. 结构光三维重建基本原理
  4. Hadoop官网翻译 (HDFS命令)
  5. OA项目实战学习(1)
  6. 网络能看到计算机 但是进不去,共享文件夹 在网络邻居看到别人的电脑 进不去...
  7. Kmeans实现数据聚类
  8. MySQLbackup备份MySQL主从_mysql扩展:xtrabackup备份和做主从
  9. Cesium交流群链接
  10. linux系统结束vim进程的指令,Linux/Vim命令(持续更新)