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

题目描述

农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流。这些机器用如下的方式发送电邮:如果存在一个由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不能互相通信需要坏掉的电脑数目的最小值。

题解

直接粘贴洛谷的题解好了,翻了好多题解只看到这个讲的比较清楚

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define maxn 505
#define inf 20000000 
using namespace std;
int n,m;
int cnt=1,head[maxn];
int d[maxn];
int s,t,ans,ind;
int team[maxn];
struct edge{int next,to,w;
}e[5005];
void insert(int u,int v,int w){cnt++;e[cnt].next=head[u];e[cnt].to=v;e[cnt].w=w;head[u]=cnt;
}
bool bfs()
{    int hea,tail;hea=tail=0;memset(d,0,sizeof(d));d[s]=1;team[++tail]=s;while(hea<tail){int x=team[++hea];for(int i=head[x];i;i=e[i].next)if(d[e[i].to]==0&&e[i].w!=0)d[e[i].to]=d[x]+1,team[++tail]=e[i].to;}if(d[t]==0) return false;return true;
}
int dfs(int x,int mmin)
{if(x==t) return mmin;int tmp,f=0;for(int i=head[x];i;i=e[i].next)if(d[e[i].to]==d[x]+1&&e[i].w&&(tmp=dfs(e[i].to,min(mmin,e[i].w)))){e[i].w-=tmp,e[i^1].w+=tmp;f+=tmp,mmin-=tmp;if(mmin==0) return f;}return f;
}
int main(){scanf("%d%d%d%d",&n,&m,&s,&t);int u,v;for(int i=1;i<=m;i++){scanf("%d%d",&u,&v);insert(u+n,v,inf);insert(v+n,u,inf);insert(v,u+n,0);insert(u,v+n,0);}for(int i=1;i<=n;i++){insert(i,i+n,1);insert(i+n,i,0);}while(bfs()){ans+=dfs(s+n,inf);}printf("%d",ans);return 0;
}

 

转载于:https://www.cnblogs.com/Elfish/p/8067776.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467110.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有意思,USB资料分享

前几天&#xff0c;有个同学在微信问我 「发哥&#xff0c;能不能给我分享一些USB的资料吗&#xff1f;」-- 然后就有了今天的文章。我对USB印象很深&#xff0c;源于两个事情第一件事情是&#xff0c;我有一个大学同学&#xff0c;他的名字里面有一个「发」字&#xff0c;我们…

在已经排好序的线性表中插入一个数,还是升序

在已经排好序的线性表中插入一个数&#xff0c;还是升序#include<stdio.h> #define Maxsize 100 typedef struct s {int elem[Maxsize];int last; }Seqlist; int Locate(Seqlist l,int e)//查找 {int i0;while(i<l.last&&l.elem[i]<e)i;if(il.last)return …

java学习笔记IO之字节输入输出流

IO字节输入输出流 OutputStream:字节输出流 该抽象类是所有字节输出流的超类&#xff1b; 定义了一些共性的成员方法&#xff1a; 1.写入一个字节 void write(int b);//b表示字节 2.写入字节数组 void write(byte[] b);//写入一个字节数组 3.写入字节数组的一部分 void write(…

firefox 和 ie 事件处理的细节,研究,再研究-----书写同时兼容ie和ff的事件处理代码...

在ie中&#xff0c;事件对象是作为一个全局变量来保存和维护的。 所有的浏览器事件,不管是用户触发 的&#xff0c;还是其他事件&#xff0c; 都会更新window.event 对象。 所以在代码中&#xff0c;只要轻松调用 window.event 就可以轻松获取 事件对象&#xff0c; 再 event.s…

不知道的,还以为是555牌香烟

你认为历史上最成功的芯片是什么&#xff1f;就是出货很多很多那种。Intel的酷睿系列&#xff1f;NO&#xff01;AMD&#xff1f;错&#xff01;别猜了&#xff0c;原来是它&#xff01;这就是电工的神器——555定时器&#xff0c;从诞生到现在&#xff0c;销量过百亿&#xff…

异形卵

【问题描述】 我们探索宇宙是想了解浩瀚星空的奥秘&#xff0c;我们却很少意识到宇宙深处藏匿的危险&#xff0c;他们无时无刻不紧盯着我们的地球。如果外星人拜访我们&#xff0c;结果可能与哥伦布当年踏足美洲大陆不会有什么两样&#xff0c;这是历史&#xff0c;也是现实。…

C语言书籍推荐

C语言书籍推荐 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、基础 1、《C语言入门很简单》 《零起点学通C语言&#xff08;多媒体范例教学&#xff09;》 《C语言从入门到精通》 2、《C程序设计语言 第2版新版》 《C程序设计语言&#xff08;第2版…

SQLServer技巧

-2.批量更新&#xff1a; UPDATE p_ProductTab SET PC4p.pc4 from (select productid030301102000,pc4423523 union all select productid030301102001,pc4sdgser) as pWHERE p_ProductTab.productidp.productid -1.保留2位小数 Convert(decimal(18,2),字段) 长度为18位&…

Linux操作寄存器前为什么要ioremap

1. 原因这里只考虑有 MMU 的芯片&#xff0c;Linux 为了实现进程虚拟地址空间&#xff0c;在启用 MMU 后&#xff0c;在内核中操作的都是虚拟地址&#xff0c;内核访问不到物理地址。如果在驱动里直接访问物理地址&#xff0c;等于访问了一个非法地址&#xff0c;会导致内核崩溃…

Loading页的实现代码

用了几种Loading页的代码&#xff0c;还是算这个好用了。真的佩服牛人们的思想。有的说用DIV来实现遮盖后面的东西&#xff0c;当FORM加载完后&#xff0c;执行CLOSE()d的JS函数。我试验了几次&#xff0c;效果不是那么好。也主要是由于我吧东西都放在我本地&#xff0c;感觉不…

Fibonacci数列

问题描述Fibonacci数列的递推公式为&#xff1a;FnFn-1Fn-2&#xff0c;其中F1F21。 当n比较大时&#xff0c;Fn也非常大&#xff0c;现在我们想知道&#xff0c;Fn除以10007的余数是多少。 输入格式输入包含一个整数n。输出格式输出一行&#xff0c;包含一个整数&#xff0c;表…

C语言——关键字

C语言——关键字 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 【谨记&#xff1a;尽量不要用printf函数&#xff0c;要去看变量的值&#xff0c;内存的值。】 auto&#xff0c;int&#xff0c;double&#xff0c;long&#xff0c;char&#xff0c;fl…

调色板栅格数据使用GDAL时注意

这几天用GDAL处理DRG数据时发现&#xff0c;有数据被处理成了黑板&#xff0c;什么都没有&#xff0c;发现是因为DRG图像颜色比较简单&#xff0c;使用了调色板的缘故。 使用SetColorTable将调色板写入后&#xff0c;一部分基本正常&#xff0c;但还有些图像还是有黑板的现象。…

jQuery实现表格行上移下移和置顶

<!DOCTYPE HTML> <html> <head> <meta charset"utf-8"> <meta name"viewport" content"widthdevice-width, initial-scale1, maximum-scale1"> <title>jQuery实现表格行上移下移和置顶</title> <m…

做算法,为什么建议你一定要学懂C++?

在工业界&#xff0c;有这样一个规律&#xff1a;“ 但凡能用其他语言的都不会用C&#xff0c;只能用C的必然用C。”但是&#xff0c;C的学习和项目开发都比较困难。一个有经验的老手也经常搞出野指针&#xff0c;内存泄露等bug&#xff0c;包括我自己在学C的时候也非常痛苦。所…

顺序查找法

#include<stdio.h> #define KeyType int #define OtherType int #define List_size 100 typedef struct{KeyType key;OtherType other; }RecordType; typedef struct{RecordType r[List_size];int length; }Recordlist; int SeqSearch(Recordlist l,int k)//没有设置监视…

IT行业专业术语

IT行业专业术语 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 目前比较流行的开发语言有哪些&#xff1f; Java、C#(C Sharp)、C、C、JavaScript、PHP、Ruby、Python等 WEB端有哪些开发技术&#xff1f; Javascript、CSS、HTML、Ajax、Flex等 比较…

AI一键注释代码、阅读整个项目、转换编程语言。已开源!

获取github源码地址和国内url、key方式&#xff1a;在文章底部 大家好今天给大家介绍一款开源项目&#xff0c;这个项目是由渡码维护的&#xff0c;这个项目支持自己的大模型和使用openai两种方式&#xff0c;本文章介绍使用openai的方式&#xff01; 使用过程中发现两个问题…

为什么别人赚钱比自己容易?

之前的文章提到自己的一个同事&#xff0c;在一家公司干了10年&#xff0c;最近跳槽找了份5万薪水的工作&#xff0c;大家都很想听他的故事。为了方便记录&#xff0c;我叫他文哥文哥比我们一般的毕业生厉害&#xff0c;他比我大将近9岁&#xff0c;我在初中的时候他已经是一个…