日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷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

總結

以上是生活随笔為你收集整理的洛谷1345 [Usaco5.4]奶牛的电信的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。