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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

分糖果(信息学奥赛一本通-T1380)

發布時間:2025/3/17 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分糖果(信息学奥赛一本通-T1380) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【題目描述】

童年的我們,將和朋友分享美好的事物作為自己的快樂。這天,C小朋友得到了Plenty of candies,將要把這些糖果分給要好的朋友們。已知糖果從一個人傳給另一個人需要1 秒的時間,同一個小朋友不會重復接受糖果。由于糖果足夠多,如果某時刻某小朋友接受了糖果,他會將糖果分成若干份,分給那些在他身旁且還沒有得到糖果的小朋友們,而且自己會吃一些糖果。由于嘴饞,小朋友們等不及將糖果發完,會在得到糖果后邊吃邊發。每個小朋友從接受糖果到吃完糖果需要m秒的時間。那么,如果第一秒C小朋友開始發糖,第多少秒所有小朋友都吃完了糖呢?

【輸入】

第一行為三個數n、p、c,為小朋友數、關系數和C小朋友的編號。

第二行為一個數m,表示小朋友吃糖的時間。

下面p行每行兩個整數,表示某兩個小朋友在彼此身旁。

【輸出】

一個數,為所有小朋友都吃完了糖的時間。

【輸入樣例】

?4 3 1
2
1 2
2 3
1 4

【輸出樣例】

5

【源程序】

#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<string> #include<cstdlib> #include<queue> #include<set> #include<vector> #define INF 0x3f3f3f3f #define PI acos(-1.0) #define N 10010 #define MOD 123 #define E 1e-6 using namespace std; struct node{int pre;int next;int w; }a[N*20]; int cnt; int head[N],q[N*10]; int vis[N],f[N]; void add(int x,int y,int w) {cnt++;a[cnt].pre=y;a[cnt].next=head[x];a[cnt].w=w;head[x]=cnt;cnt++;a[cnt].pre=x;a[cnt].next=head[y];a[cnt].w=w;head[y]=cnt; }int main() {int n,m,c,p;cin>>n>>p>>c>>m;for(int i=1;i<=p;i++){int x,y;cin>>x>>y;add(x,y,1);}memset(f,INF,sizeof(f));f[c]=0;vis[c]=1;int headd=1,tail=1;q[tail]=c;tail++;while(headd<tail){int x=q[headd];int k=head[x];while(k!=0){int y=a[k].pre;if(f[y]>f[x]+a[k].w){f[y]=f[x]+a[k].w;if(vis[y]==0){q[tail]=y;vis[y]=1;tail++;}}k=a[k].next;}headd++;}int maxx=-INF;for(int i=1;i<=n;i++)maxx=max(maxx,f[i]);cout<<maxx+m+1<<endl;return 0; }

?

總結

以上是生活随笔為你收集整理的分糖果(信息学奥赛一本通-T1380)的全部內容,希望文章能夠幫你解決所遇到的問題。

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