题目描述:

体育场突然着火了,现场需要紧急疏散,但是过道真的是太窄了,同时只能容许一个人通过。现在知道了体育场的所有座位分布,座位分布图是一棵树,已知每个座位上都坐了一个人,安全出口在树的根部,也就是1号结点的位置上。其他节点上的人每秒都能向树根部前进一个结点,但是除了安全出口以外,没有任何一个结点可以同时容纳两个及以上的人,这就需要一种策略,来使得人群尽快疏散,问在采取最优策略的情况下,体育场最快可以在多长sh时间内疏散完成。(2019京东算法实习招聘)

输入:

第一行包括一个整数n,即树的结点数量(1<=n<=100000)

接下来有n-1行,每行有两个正整数x,y,表示在x和y结点之间存在一条边。(1<=x<=y<=n)

输出:

输出仅包含一个正整数,表示所需要的最短时间

样例输入:

6

2 1

3 2

4 3

5 2

6 1

样例输出:

4

#定义一个列表,存放和1直接相连接的值,不直接相连的先放到一个临时列表中,一层一层过滤
import sys#all_list用于存放直接和1相连的数据,比如2、4和1直接相连,则all_list为[[2],[4]]
#temp用于存放不和1直接相连的数据组,比如[2,3],[4,5]不和1直接相连,则temp为[[2,3],[4,5]]
all_list = list()
temp = list()#先取出第一行的值,然而后面并没有用到
num = int(sys.stdin.readline().strip())line = sys.stdin.readline().strip()
while len(line):two = list(map(int,line.split(' ')))#两个有其中一个是1,将另一个作为列表放入all_list中,否则一组数都放到temp中去if two[0] == 1 or two[1] == 1:#判断两个哪个不是1if two[0] == 1:all_list.append([two[1]])else:all_list.append([two[0]])else:temp.append(two)line = sys.stdin.readline().strip()#所有数据都遍历过一遍,并且所有和1连接的值都以list的格式放入到all_list中
index_ = list()
while len(temp) != 0:#遍历一遍temp列表,看里面有没有和all_list中相连接的for i in range(len(temp)):#每一个temp中的值都要和all_list中的每一个值进行配对for j in range(len(all_list)):#两个其中在all_list中,将另一个放入if temp[i][0] in all_list[j] or temp[i][1] in all_list[j]:if temp[i][0] in all_list[j]:all_list[j].append(temp[i][1])else:all_list[j].append(temp[i][0])index_.append(temp[i])for i in range(len(index_)):temp.remove(index_[i])#判断all_list中最长的那个列表的长度
max_len = 0
for i in range(len(all_list)):len_ = len(all_list[i])if len_ > max_len:max_len = len_print(max_len)

菜鸟一枚,代码仅供参考,如有问题,望指正~

紧急疏散(python)相关推荐

  1. Github配置(git+vscode+python+jupyter)

    ①下载git 打开 git bash 工具的用户名和密码存储 $ git config --global user.name "Your Name" $ git config -- ...

  2. 【实验楼】python简明教程

    ①终端输入python进入 欣赏完自己的杰作后,按 Ctrl + D 输入一个 EOF 字符来退出解释器,你也可以键入 exit() 来退出解释器. ②vim键盘快捷功能分布 ③这里需要注意如果程序中 ...

  3. 【Kaggle Learn】Python 5-8

    五. Booleans and Conditionals Using booleans for branching logic x = True print(x) print(type(x))''' ...

  4. 【Kaggle Learn】Python 1-4

    [Kaggle Learn]Python https://www.kaggle.com/learn/python 一. Hello, Python A quick introduction to Py ...

  5. 使用python愉快地做高数线代题目~

    今天接触到了python,发现真是极易上手啊!对比c语言是什么鬼东西= = 诶,等下,看完教学文章发现TA在下面写了这句话 如果做了前面的内容你可能已被吸引了,觉得c语言真的是废材! 不...不是的. ...

  6. python 位运算与等号_Python 运算符

    和大多数语言一样,Python也有很多运算符,并且运算符跟其他语言的运算符大同小异接下来一一介绍: 算术运算符: 运算符描述实例 +加 - 两个对象相加a+b的输出结果是30 -减 - 得到复数或者一 ...

  7. python减小内存占用_如何将Python内存占用缩小20倍?

    当程序执行过程中RAM中有大量对象处于活动状态时,可能会出现内存问题,特别是在对可用内存总量有限制的情况下. 下面概述了一些减小对象大小的方法,这些方法可以显著减少纯Python程序所需的RAM数量. ...

  8. python中排序英文单词怎么写_Python实现对文件进行单词划分并去重排序操作示例...

    本文实例讲述了Python实现对文件进行单词划分并去重排序操作.,具体如下: 文件名:test1.txt 文件内容: But soft what light through yonder window ...

  9. python程序如何执行死刑图片_如何判断对象已死

    已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了: 引用计数 给对象添加一个引用计数器,每当有一个地方引用他,计算器就加 1:当引用失效时,计数器减 1:任何时刻计数器 ...

  10. Python gRPC 安装

    1. 安装依赖库 sudo pip3 install grpcio sudo pip3 install protobuf sudo pip3 install grpcio_tools 2. 生成对应文 ...

最新文章

  1. shell常用的基础命令
  2. 某公司Java面试题
  3. 推荐一波腾讯专家的技术书单,请收下!
  4. Git中pull,commit和push的概念
  5. php5.5 mysql密码无法_MySQL密码正确却无法本地登录的解决方法
  6. JPA规范:一对多、一对一、多对多的双向关联与级联操作以及JPA联合主键
  7. CodeForces - 427D Match Catch(后缀数组/广义后缀自动机)
  8. php 测试控制器,php – 控制器的Laravel单元测试
  9. sae php api,api.php · silenceper/saeApi - Gitee.com
  10. python项目开发实例-有趣的十个Python实战项目,让你瞬间爱上Python!
  11. implode - of an array
  12. Eclipse颜色主题插件-Eclipse Color Theme
  13. matlab解超静定方程,超定方程和最小二乘法 | 学步园
  14. iphone模拟器中的documentPath
  15. impdp导入的时候报错,ORA-06502,LPX-00230
  16. 数据库服务器硬件运行环境,数据库及WEB服务器环境部署硬件配置模板
  17. Ubuntu 8.04中文智能拼音输入法
  18. raspberry pi_Raspberry Pi入门指南
  19. CSS网页布局中易犯的10个小错误
  20. 【Linux】——用户账号和组账号

热门文章

  1. 医药魔方完成数千万元A轮融资,大数据支持中国制药产业升级
  2. 【爬虫学习笔记day44】5.2. (scrapy案例二)阳光热线问政平台爬虫
  3. 1. 无穷维空间的测度论-Wiener测度(二)
  4. 理解SVM的三重境界
  5. 无线网络的几种认证与加密方式
  6. 【22】像素分辨率像元的计算及含义
  7. 打开CMD的方式及常用的DOS命令
  8. MYSQL部分面试题型
  9. CT图像预处理之窗宽窗位调整
  10. 个人中心网页设计html,超全面!个人中心页面从思考到设计全过程