紧急疏散(python)
题目描述:
体育场突然着火了,现场需要紧急疏散,但是过道真的是太窄了,同时只能容许一个人通过。现在知道了体育场的所有座位分布,座位分布图是一棵树,已知每个座位上都坐了一个人,安全出口在树的根部,也就是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)相关推荐
- Github配置(git+vscode+python+jupyter)
①下载git 打开 git bash 工具的用户名和密码存储 $ git config --global user.name "Your Name" $ git config -- ...
- 【实验楼】python简明教程
①终端输入python进入 欣赏完自己的杰作后,按 Ctrl + D 输入一个 EOF 字符来退出解释器,你也可以键入 exit() 来退出解释器. ②vim键盘快捷功能分布 ③这里需要注意如果程序中 ...
- 【Kaggle Learn】Python 5-8
五. Booleans and Conditionals Using booleans for branching logic x = True print(x) print(type(x))''' ...
- 【Kaggle Learn】Python 1-4
[Kaggle Learn]Python https://www.kaggle.com/learn/python 一. Hello, Python A quick introduction to Py ...
- 使用python愉快地做高数线代题目~
今天接触到了python,发现真是极易上手啊!对比c语言是什么鬼东西= = 诶,等下,看完教学文章发现TA在下面写了这句话 如果做了前面的内容你可能已被吸引了,觉得c语言真的是废材! 不...不是的. ...
- python 位运算与等号_Python 运算符
和大多数语言一样,Python也有很多运算符,并且运算符跟其他语言的运算符大同小异接下来一一介绍: 算术运算符: 运算符描述实例 +加 - 两个对象相加a+b的输出结果是30 -减 - 得到复数或者一 ...
- python减小内存占用_如何将Python内存占用缩小20倍?
当程序执行过程中RAM中有大量对象处于活动状态时,可能会出现内存问题,特别是在对可用内存总量有限制的情况下. 下面概述了一些减小对象大小的方法,这些方法可以显著减少纯Python程序所需的RAM数量. ...
- python中排序英文单词怎么写_Python实现对文件进行单词划分并去重排序操作示例...
本文实例讲述了Python实现对文件进行单词划分并去重排序操作.,具体如下: 文件名:test1.txt 文件内容: But soft what light through yonder window ...
- python程序如何执行死刑图片_如何判断对象已死
已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了: 引用计数 给对象添加一个引用计数器,每当有一个地方引用他,计算器就加 1:当引用失效时,计数器减 1:任何时刻计数器 ...
- Python gRPC 安装
1. 安装依赖库 sudo pip3 install grpcio sudo pip3 install protobuf sudo pip3 install grpcio_tools 2. 生成对应文 ...
最新文章
- shell常用的基础命令
- 某公司Java面试题
- 推荐一波腾讯专家的技术书单,请收下!
- Git中pull,commit和push的概念
- php5.5 mysql密码无法_MySQL密码正确却无法本地登录的解决方法
- JPA规范:一对多、一对一、多对多的双向关联与级联操作以及JPA联合主键
- CodeForces - 427D Match Catch(后缀数组/广义后缀自动机)
- php 测试控制器,php – 控制器的Laravel单元测试
- sae php api,api.php · silenceper/saeApi - Gitee.com
- python项目开发实例-有趣的十个Python实战项目,让你瞬间爱上Python!
- implode - of an array
- Eclipse颜色主题插件-Eclipse Color Theme
- matlab解超静定方程,超定方程和最小二乘法 | 学步园
- iphone模拟器中的documentPath
- impdp导入的时候报错,ORA-06502,LPX-00230
- 数据库服务器硬件运行环境,数据库及WEB服务器环境部署硬件配置模板
- Ubuntu 8.04中文智能拼音输入法
- raspberry pi_Raspberry Pi入门指南
- CSS网页布局中易犯的10个小错误
- 【Linux】——用户账号和组账号