1787: 生化危机

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 64  Solved: 19

SubmitStatusWeb Board

Description

X博士想造福人类, 研发一种可以再生肢体的药物, 可是很不幸......研究失败了, 他在蜥蜴身上实验的时候, 蜥蜴发生了变异, 更糟糕的是, 蜥蜴逃出了生化实验室.

恐怖的事情发生了, 疫情以X博士所在的城市为中心向四周扩散开, 最终, 整个地球上的城市都被感染了.假设整个地球一共有N个城市, 这N个城市是连通的, 有N-1条通道把他们连接起来.病毒会以一座城市为中心,在一天的时间内, 会把和他相连的周围的所有城市感染. 那么, 多少天的时间, 整个地球的城市都感染呢?

Input

第一行输入一个T(T <= 50), 表示一共有T组测试数据. 每组数据第一行两个数n, k. n表示有n(2 <= n <= 10000)个城市, 代表城市1-n, k是X博士所在的城市. 接下来n-1行, 每行有两个数u, v, 表示城市u和v之间有一条通道.

Output

每组数据第一行输出第一个数 x , 表示整个地球感染需要x天. 接下来 x 个数, 第i个数表示第i天感染了城市的数量. (注意, 每组数据第二行每个数据后边都有一个空格).

Sample Input

23 11 22 33 21 22 3

Sample Output

31 1 121 2

思路:用vector存储相连的结点,然后从起点开始搜索,对感染到的结点进行标记,然后在搜索过程中进行计数,DFS几次就是第几天+1
ac代码:

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<vector>
#include<iostream>
#include<algorithm>
#define fab(a) (a)>0?(a):(-a)
#define LL long long
#define MAXN 100010
#define mem(x) memset(x,0,sizeof(x))
#define INF 0xfffffff
#define PI acos(-1.0)
using namespace std;
vector<int>map[MAXN];
int bz[MAXN];
int ans[MAXN];
void dfs(int v,int x)
{for(int i=0;i<map[v].size();i++){if(bz[map[v][i]]==0){bz[map[v][i]]=1;ans[x]++;dfs(map[v][i],x+1);}}
}
int main()
{int t,i;int n,m,q,w;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);mem(ans);mem(bz);for(i=1;i<=n;i++){ map[i].clear();} for(i=1;i<n;i++){scanf("%d%d",&q,&w);map[q].push_back(w);map[w].push_back(q);}bz[m]=1;dfs(m,2);int cnt=1;for(i=1;i<=n;i++) if(ans[i]) cnt++;printf("%d\n",cnt);printf("1 ");for(i=1;i<=n;i++) if(ans[i]) printf("%d ",ans[i]);printf("\n");}return 0;
}

ZZULIOJ 1787 生化危机 (vector+DFS)相关推荐

  1. zzulioj 1787: 生化危机 (vector+dfs) 好题

    1787: 生化危机 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 70  Solved: 20 SubmitStatusWeb Board Desc ...

  2. zzuli 1787: 生化危机 (bfs与dfs)

    1787: 生化危机 Description X博士想造福人类, 研发一种可以再生肢体的药物, 可是很不幸......研究失败了, 他在蜥蜴身上实验的时候, 蜥蜴发生了变异, 更糟糕的是, 蜥蜴逃出了 ...

  3. zzuli 1787: 生化危机 (BFS)

    http://acm.zzuli.edu.cn/problem.php?id=1787 1787: 生化危机 Description X博士想造福人类, 研发一种可以再生肢体的药物, 可是很不幸... ...

  4. zzuli生化危机(dfs)

    生化危机 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 73  Solved: 21 SubmitStatusWeb Board Descriptio ...

  5. 2262: master(vector + dfs)

    这就是!!! 题目描述 有N个人,编号为1至N,他们相互之间拜师学艺. 某个时刻,如果甲向乙拜师,一般情况下乙就将甲收为徒弟.这时乙会将甲视为大徒弟,而所有甲的徒弟(如果有的话)便成为乙的小徒弟. 但 ...

  6. lego-loam数据_使用lego minifigures数据集在fastai中对datablocks api图像进行分类

    lego-loam数据 The topics covered in this post are as follows 这篇文章涵盖的主题如下 Introduction 介绍 The Task 任务 T ...

  7. linux与linux传文件乱码,关于Linux与windows传递文件乱码问题

    linux下一般是采用utf-8的编码,而我们在windows上编辑文件时是gb2312的编码.所以导致中文编码会乱码.要更正这个问题实际上很简单只要把文件转换成utf-8编码格式然后再导入就ok啦. ...

  8. PTA 7-51 生化危机 (25分) dfs

    人类正在经历一场生化危机,许多城市已经被病毒侵袭,这些城市中的人们为了避免感染病毒,计划开车逃往其他没有被病毒入侵的城市(安全城市).有些城市之间有公路直达,有些没有.虽然他们知道哪些城市是安全的,但 ...

  9. vector邻接表建图+DFS+BFS

    以边操作为主的图用边集数组存储比较好,相比链式前向星,vector建图更容易懂. #include <iostream> #include <cstdio> #include ...

最新文章

  1. 深度学习(训练/开发/测试集)的划分技巧
  2. mysql存储语句_MYSQL 常用语句保存
  3. 九十年代以来的文学事变与60后70后80后作家的写作之三
  4. 读《可复制的领导力》
  5. 黑马程序员---java基础------------------多线程
  6. javascript 西瓜一期 15 数据的存储单位
  7. bokeh.model API
  8. ubuntu中实践操作系统第二章系统调用与课件不同之处
  9. RDD与DataFrame
  10. python 灰度图像转彩色_彩色图像--伪彩处理 灰度图转伪彩色图像
  11. 河北化工医药职院美和易思软件技术专业“指舞飞扬”比赛圆满成功
  12. 23种设计模式——最好理解的代理模式
  13. 分享一些百度贴吧引流的实用干货和防删技巧
  14. php博客视频教程,ThinkPHP5 博客项目实战视频教程
  15. 谷歌搜索技巧(可看全球眼或某些站密码)
  16. android 永久root权限,安卓 实现永久性开启adb 的root权限
  17. 梦想从来不是手里的钻石,而是放到天上的风筝!
  18. Qt相关资源下载百度云地址 永久有效
  19. 这 7 门 编程语言最适合新手学习
  20. 【146期】面试官问:说一说 RabbitMQ 的几种工作模式和优化建议?

热门文章

  1. kotlin java 效率_Java与Kotlin系列文章之性能问题详解
  2. linux下ImageMagick convert命令
  3. 通信中的DA,SA,TA,RA分别是什么意思?
  4. 2022.11.17排序题讲解
  5. 如何解决MathType无法正常使用问题
  6. 巡云轻论坛系统 2.3 发布,新增话题收藏功能
  7. DELL液晶显示器如何进入工程模式
  8. 校尉羽书飞瀚海,顺序表中增删改
  9. 初学者如何查阅自然语言处理(NLP)领域学术资料
  10. 工地wifi覆盖解决方案怎么样