TYVJ P1083 分糖果 Label:bfs

描述

童年的我们,将和朋友分享美好的事物作为自己的快乐。这天,C小朋友得到了Plenty of candies,将要把这些糖果分给要好的朋友们。已知糖果从一个人传给另一个人需要1 秒的时间,同一个小朋友不会重复接受糖果。由于糖果足够多,如果某时刻某小朋友接受了糖果,他会将糖果分成若干份,分给那些在他身旁且还没有得到糖果的小朋友们,而且自己会吃一些糖果。由于嘴馋,小朋友们等不及将糖果发完,会在得到糖果后边吃边发。每个小朋友从接受糖果到吃完糖果需要m秒的时间。那么,如果第一秒C小朋友开始发糖,第多少秒所有小朋友都吃完了糖呢?

输入格式

第一行为三个数n、p、c,为小朋友数、关系数和C小朋友的编号。
第二行为一个数m,表示小朋友吃糖的时间。
下面p行每行两个整数,表示某两个小朋友在彼此身旁

输出格式

一个数,为所有小朋友都吃完了糖的时间

测试样例1

输入

4 3 1 

1 2 
2 3 
1 4

输出

5

备注

【限制】
40%的数据满足:1<=n<=100
100%的数据满足:1<=n<=1000
m<=n*(n-1)/2,不会有同一个关系被描述多次的情况。

【样例解释】
  第一秒,糖在1手上。第二秒,糖传到了2、3的手中。第三秒,糖传到了4的手中,此时1吃完了。第四秒,2、3吃完了。第五秒,4吃完了。所以答案是5。

代码

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<vector>
 4 #include<queue>
 5 #include<cstring>
 6 #include<algorithm>
 7 using namespace std;
 8 struct cc{
 9     int used,time;
10 }node[1005];
11 vector<int> G[1005];
12 queue<int> que;
13 int n,p,c,m,ans;
14 int main(){
15 //    freopen("01.txt","r",stdin);
16     scanf("%d%d%d%d",&n,&p,&c,&m);
17     for(int i=1;i<=p;i++){
18         int x=0,y=0;
19         scanf("%d%d",&x,&y);
20         G[x].push_back(y);
21         G[y].push_back(x);
22     }
23     for(int i=1;i<=n;i++) node[i].time=node[i].used=0;
24
25     que.push(c);
26     node[c].time=1;
27     node[c].used=1;
28     while(!que.empty()){
29         int x=que.front();que.pop();
30
31         for(int i=0;i<G[x].size()&&!G[x].empty();i++){
32             int k=G[x][i];
33             if(node[k].used!=0) continue;
34             node[k].time=node[x].time+1;
35             node[k].used=1;
36 //            printf("%d\n",node[k].time);
37             ans=max(ans,node[k].time);
38             que.push(k);
39         }
40     }
41     printf("%d\n",ans+m);
42     return 0;
43 }

不管小朋友吃多少秒

肯定最后呐糖果的小朋友,吃的最慢

只要知道最后是什么时候拿到的

再加上吃的时间就好

话说这小朋友吃糖果速度真快,2秒一个,666~

时间: 2024-10-14 04:43:10

TYVJ P1083 分糖果 Label:bfs的相关文章

分糖果

分糖果 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 18   Accepted Submission(s) : 3 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 童年的我们将和朋友分享美好的事物作为自己的快乐.这天,C小朋友得到了

【蓝桥杯】PREV-32 分糖果

题目链接:http://lx.lanqiao.org/problem.page?gpid=T124 历届试题 分糖果 时间限制:1.0s   内存限制:256.0MB 问题描述 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子. 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数. 反复进行这个游戏,直到所有小朋友的糖果数都相同为止. 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果. 输入格

蓝桥-分糖果(算法训练)

1 /* 2 蓝桥-分糖果 3 测试通过 4 时间:2015-9-22 5 6 问题描述 7 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 8 9 每个小朋友都把自己的糖果分一半给左手边的孩子. 10 11 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数. 12 13 反复进行这个游戏,直到所有小朋友的糖果数都相同为止. 14 15 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果. 16 输入格式 17 程序首先读入一个整数N(

1503140001-蓝桥杯-历届试题 分糖果

历届试题 分糖果 时间限制:1.0s   内存限制:256.0MB 问题描述 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子. 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数. 反复进行这个游戏,直到所有小朋友的糖果数都相同为止. 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果. 输入格式 程序首先读入一个整数N(2<N<100),表示小朋友的人数. 接着是一行用空格分开的N个偶数(

HNUSTOJ-1639 分糖果(几何)

1639: 分糖果 时间限制: 1 Sec  内存限制: 128 MB提交: 261  解决: 118[提交][状态][讨论版] 题目描述 为了实验室的发展,吴大大采购了一箱零食O(∩_∩)O~~ 在吴大大取快递的时候,实验室已经已经默默地聚集了一堆吃货,准备抢劫他,为了避免发生由一袋零食引发的血案,同时也是为了体现我们实验室的和谐,在实验室的N个人达成了一个协议:等吴大大一回来,大家就包围他!但是每个人必须保证距离吴大大1m,并且相邻两人间的距离相等. 但是实验室的N个人都不知道怎么站更加合适

C语言 &#183; 分糖果

历届试题 分糖果 时间限制:1.0s   内存限制:256.0MB 问题描述 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子. 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数. 反复进行这个游戏,直到所有小朋友的糖果数都相同为止. 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果. 输入格式 程序首先读入一个整数N(2<N<100),表示小朋友的人数. 接着是一行用空格分开的N个偶数(

蓝桥杯 - 分糖果 (模拟~)

历届试题 分糖果 时间限制:1.0s   内存限制:256.0MB 问题描述 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子. 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数. 反复进行这个游戏,直到所有小朋友的糖果数都相同为止. 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果. 输入格式 程序首先读入一个整数N(2<N<100),表示小朋友的人数. 接着是一行用空格分开的N个偶数(

hunnu11543:小明的烦恼——分糖果

Problem description   小明在班里一直是个非常公正的孩子.这点同学和老师都非常清楚,这不,老师每周都会从家里带来一些糖果.然后叫小明把糖果分给其它小朋友,但这个班里的同学都有一个非常特别的性格,就是他们仅仅喜欢偶数.对于糖果也一样,所以小明在分糖果时也必需要保证这一点,即使每一个同学分的糖果数量不一样.都是奇怪的是,小明有时候并不可以合格的分糖果,这让他大为苦恼.害怕别的同学会不再信任他(虽然其它同学不会这么想).所以他想请你帮帮他.在每次老师把糖果给他时,就帮他推断出糖果能

分糖果游戏

十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩6块,第九个小孩14块,第十个小孩20块.然后所有的小孩同时将自已手中的糖分一半给右边的小孩,糖块数为奇数的人可向老师要一块,问经过这样几次调整后大家手中的糖的块数都一样多?每人各有多少块糖? public class test2 { public void shareSweet75() {            int[] boy =