生化危机

描述

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

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

输入

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

输出

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

样例输入1

2
3 1
1 2
2 3
3 2
1 2
2 3

样例输出1

3
1 1 1
2
1 2

这是一道搜索题,不断搜索相邻的边,标记,并记录是第几波,记录这一波的数量,最初用bfs超时了,毕竟搜起来有些无脑,然后突然想起最近看的啊哈算法上说的邻接表(一次也没用过),看起来挺牛逼,不如试试,答案不对,想了想,应该双向记录,然后总是runtime error,因为我把一句用到队列顶部元素的语句放在,出队后面,估计是用了已经释放的空间,改了改就过了。

代码:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
using namespace std;
int n,k,c;
int u[20005],v[20005],first[20005],nexti[20005];
struct que
{
    int va,d;
}temp;
int main()
{
   int T;
   queue<que>q;
   int cou[10005],vis[10005];
   cin>>T;
   while(T--)
   {
       scanf("%d%d",&n,&k);
       memset(first,-1,sizeof(first));
       memset(nexti,-1,sizeof(nexti));
       memset(cou,0,sizeof(cou));
       memset(vis,0,sizeof(vis));
       for(int i=0;i<n-1;i++)
       {
           cin>>u[i]>>v[i];
       }

       for(int i=n-1;i<2*(n-1);i++)
       {
           u[i]=v[i-n+1];
           v[i]=u[i-n+1];
       }
       for(int i=0;i<(n-1)*2;i++)
       {
           nexti[i]=first[u[i]],first[u[i]]=i;
       }

       vis[k]=1;
       temp.va=k,temp.d=1;
       q.push(temp);
       c=1;
       cou[c]++;
       while(!q.empty())
       {
           k=first[q.front().va];
           while(k!=-1)
           {
               if(!vis[v[k]])
               {
                   vis[v[k]]=1;
                   temp.va=v[k],temp.d=q.front().d+1;
                   c=temp.d;
                   cou[c]++;
                   q.push(temp);
               }
               k=nexti[k];
           }
           q.pop();
       }
       cout<<c<<endl;
       for(int i=1;i<=c;i++)
       cout<<cou[i]<<‘ ‘;
       cout<<endl;
   }
}
时间: 2024-10-10 00:17:01

生化危机的相关文章

生化危机 邻接表存图+BFS

生化危机 发布时间: 2015年10月10日 18:05   时间限制: 1000ms   内存限制: 256M 描述 X博士想造福人类, 研发一种可以再生肢体的药物, 可是很不幸......研究失败了, 他在蜥蜴身上实验的时候, 蜥蜴发生了变异, 更糟糕的是, 蜥蜴逃出了生化实验室. 恐怖的事情发生了, 疫情以X博士所在的城市为中心向四周扩散开, 最终, 整个地球上的城市都被感染了.假设整个地球一共有N个城市, 这N个城市是连通的, 有N-1条通道把他们连接起来.病毒会以一座城市为中心,在一天

【万能的搜索,用广搜来解决DP问题】ZZNU -2046 : 生化危机 / HDU 1260:Tickets

2046 : 生化危机 时间限制:1 Sec内存限制:128 MiB提交:19答案正确:8 题目描述 当致命的T病毒从Umbrella Corporation 逃出的时候,地球上大部分的人都死去了. 麻烦的是,他们并没有真正的死去. 爱丽诗在一个狭窄的巷子中,遇见了n个丧尸(编号1-n),巷子太窄了,爱丽诗只能按顺序解决它们. 爱丽诗擅长用匕首和弓箭,当爱丽诗面临编号为i的丧尸时,匕首每次只能解决一个丧尸用时为a[i],弓箭每次能且只能解决两个相邻的丧尸(丧尸i,和丧尸i+1),用时为b[i].

生化危机6

<生化危机6>是由日本CAPCOM公司推出的动作冒险作品<生化危机>系列的第六部,混合了动作与恐怖生存,该作在发售之初饱受质疑,但是随着时间推进其独特的日系恐怖元素让这款作品受到了全世界玩家们的认可,实现了口碑逆袭的传奇.作为一款销售曾达到630万的一款外服游戏,国内玩家想要体验肯定是少不了游戏加速器的助力,那么玩生化危机6用什么游戏加速器好呢?斧牛游戏加速器加速生化危机6美服的延迟非常的低.生化危机6美服服务器距离我们隔海相望,距离非常的遥远,远距离造成的延迟非常的高,而斧牛游戏

用 C++ 写一个简易的《生化危机 4》修改器

思路比较简单,实现方法也不难,我这里大概说一下流程:♦ 用 CheatEngine 或者类似的内存搜索工具定位要修改的数值的内存地址:♦ 确定要修改的数值所占的字节数:♦ 提升修改器进程自身的 Privilege(特权):♦ 查找并打开目标进程,获取目标进程句柄:♦ 读取目标进程内存地址上的值:♦ 把值写入目标进程的内存地址上: 第一第二步不属于本文的讨论范围,我们从第三步开始吧: 微软从 Windows Vista  开始,引入了新的安全机制,一个进程如果没有足够的权限,是无法读写或者查询另外

soj1080生化危机三

背景:由于对map使用的不熟悉,先一直无法编译通过,当纠正了map的错误后,一次ac. 思路:先用map对每个怪物需要消耗的子弹和一个怪物会伤害人多少血进行映射,然后就是简单模拟了. 学习:map的简单使用. #include <iostream> #include <map> using namespace std; map<char,int> xue,zidan; int l,a; void judge(char guaiwu,int g_number,int cl

让&quot;世界最速开发&quot;成为可能!承担【生化危机7】开发任务的卡普空新引擎【RE ENGINE】

前言:最近在读游戏引擎架构,然后读到了这篇去年的文章,深有感触,书中提到的很多东西在这里都有呈现,于是翻译一下,做个记录. 原文载于:https://cgworld.jp/feature/201702-cgw222T2-bio.html 2017年1月26日发售的生化7.用来开发这个游戏的是卡普空社内研发的引擎[RE ENGINE].融入浓厚的卡普空游戏哲学的最先进的本引擎,待我们来详细了解. ※本文从 月刊「CGWORLD + digital video」vol. 222(2017年2月号)转

程序员每天累成狗,是为了什么

HI,想我了吗 了吗 了吗?自从上次情人节一别,我已经接近20天没更新文章了. 至于原因:是,办点其他私事,这一段压根没怎么联网,所以不太好意思,我也很想你们了.大家也不要问为什吗,辣么帅的人有什么事了,从今天开始我就正式回归了!还是那熟悉的节奏和风格,和帅帅的颜值 掌声响起来...啪啪啪 啪啪啪 这篇文章的起因有二点: 一.我这些天之所以没更新,不是因为我懒,是因为我确实很累和其他私事. 二.有许多人问我说:小北哥哥,感觉每天都很累,真不知道为什么,什么时候是个头! 我看我们的很多同行,都是一

[盘点]现今热门的h5网游

各位好久不见,过年的休息时间已经结束,大家休息了一周,又要开始新的一年的奋斗了!于是小编从回来的第一天就开始花时间自己整理了一篇文章,所有各位是不是应该夸一夸小编呢?因为小编又要开始分享“干货”了.(都是小编自己的一些理解,若有错误或不足,请提出) 各位在过年的这一段时间里,都干了些啥呢? 别的不说,肯定有很多单身的童鞋们被长辈们同时逼问事业与爱情上的种种事情,当然小编也是一样,然后各种躲着不肯见人,于是无聊地掏出自己的手机,打开游戏,思考人生. (强行回归话题,感觉没啥关系,其实是扯淡) 说到

一位程序员的妻子讲述她老公教给她了什么

我曾经跟朋友开玩笑说,这个时代,有两种人的妻子应该要受人尊敬,第一种是军嫂,这是毫无争议的,第二种就是像我这样的,程序员的老婆.当然,这个 玩笑半分自嘲半分真.我的本科是穿着大白褂在各种挂着植物.动物.有机化学.无机化学的门牌的实验室里度过的,在显微镜下给三段生的夹竹桃画过横切片图, 在大头针和解剖剪子的辅助下找过蚯蚓的三条神经,闻过带有臭鸡蛋味的硫化氢气体-- 没有人欣赏我. 因 为没有人在意我在说什么.是啊,我说的那些东西根本就没什么用处,别人还不如去微博上关注科学松鼠会.他们说,女生就应该