P1345 [USACO5.4]奶牛的电信Telecowmunication
链接: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相关推荐
- luogu P1345 [USACO5.4]奶牛的电信Telecowmunication(建图技巧 - “割点”模板 、最小割)
P1345 [USACO5.4]奶牛的电信Telecowmunication 最小割,我们建立一个超级源点和超级汇点,做一下最小割,即可得到通过割边使得整张图变成两个完全不相连的集合的最小花费. 同样 ...
- 洛谷P1345 [USACO5.4]奶牛的电信Telecowmunication(最小割点,最大流) 题解
题目来源: 点击打开链接 题目描述: 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1, ...
- 洛谷P1345 [USACO5.4]奶牛的电信Telecowmunication(最小割)
题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...
- [USACO5.4]奶牛的电信Telecowmunication
https://www.luogu.org/problemnew/show/P1345 题解: 网络流+最小割 /* *@Author: STZG *@Language: C++ */ #includ ...
- 最小割板子题——[USACO5.4]奶牛的电信
今天邱神给我们讲了图论,还讲了一下网络流算法.自己找了一个洛谷板子题. 题目描述农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存 ...
- 洛谷1345 [Usaco5.4]奶牛的电信
题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...
- 【洛谷 1345】 奶牛的电信
以前刷试炼场时根本不会的 现在 一眼最小割! #include <cstdio> #include <cstring> #include <algorithm> # ...
- 2019.2-2019.3 TO-DO LIST
DP P2723 丑数 Humble Numbers(完成时间:2019.3.1) P2725 邮票 Stamps(完成时间:2019.3.1) P1021 邮票面值设计(完成时间:2019.3.1) ...
- [图论]---[网络流]---最小点割数/最小点割集
最小点割数 给定一个无向图,源点S和汇点T,问最少删除几个结点能使S和T不连通. 使S和T不连通的算法我们知道有最小割,但是最小割是将边割掉,所以我们需要将求割点转化为求割边. 我们知道如果在原图去掉 ...
最新文章
- 图灵访谈 | 鹅厂专家李成熙:做好规划,才能事半功倍
- mySql中Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的问题
- Android细节问题总结(二)
- elisa标准曲线怎么做_ELISA标准曲线制作
- java不需要返回数据时_从Java方法返回时,BigDecimal不保持实际值
- 第二章:Improving On User Commands--22.显示不同时区的时间
- 工作失职的处理决定_员工工作失误处罚处理决定书范本(3篇)
- 大班音乐机器人反思_幼儿园大班音乐律动教案《伦敦桥》含反思
- VS2008超有用的快捷键
- 悟透JavaScript--可爱与智慧并存,灵感与诙谐共生
- Jenkins的Windows Slave的配置
- IDEA 修改文件编码
- 计算机教师中级职称个人总结,职称个人总结
- 关于texlive2021安装,一直卡在安装界面怎么回事?
- 小米手机遇到卡顿问题怎么抓当时的日志
- 网络流量监控器mrtg全攻略
- 个人品牌 比漂亮简历更重要
- 怎么用计算机求logo,pclogo小海龟里帮我设计一个复杂图
- Linux简单介绍及常用命令
- 安川驱动器维修SGD7S-550A00A002/B202