29.聚餐地点 or 欢乐的周末-双端队列--OD

文章描述了小华和小为在有障碍物的地图上,利用BFS算法寻找两个都能到达的聚餐地点的问题,通过遍历并检查每一步的可达性来确定最终可选地点数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 小华和小为是很好朋友,她们约定周末去一起吃饭,通过手机交流,她们选择了很多聚集地点
# 由于自然地理地形等原因,部分聚餐地点不可达,求小华和小为都能到达的聚餐地点有多少个
#
# 输入
# 第一行输入m,n  m表示地图的长度,n表示地图的宽度
# 第二行开始输入具体信息,地图信息0表示畅通道路,1为障碍物
# 2为小华或小为 ,地图中仅有2个2,3为选中聚餐地点

# 4 4
# 2 1 0 3
# 0 1 2 1
# 0 3 0 0
# 0 0 0 0
#
#输出: 2



from collections import deque


def bfs(row, col):
    queue = deque([(row, col)])
    visited = set([(row, col)])

    while queue:
        r, c = queue.popleft()

        if (r, c) == end_spot:
            return True

        for dr, dc in [(-1, 0), (1, 0), (0, -1), (0, 1)]:
            nr, nc = r + dr, c + dc

            if not (0 <= nr < m and 0 <= nc < n) or map_[nr][nc] == "1":
                continue

            if (nr, nc) not in visited:
                queue.append((nr, nc))
                visited.add((nr, nc))

    return False


n, m = map(int, input().split())
map_ = [input().split() for _ in range(m)]

start_spots = []
end_spots = []

for i in range(m):
    for j in range(n):
        if map_[i][j] == "2":
            start_spots.append((i, j))
        elif map_[i][j] == "3":
            end_spots.append((i, j))

count = 0

for end_spot in end_spots:
    if all(bfs(start_spot[0], start_spot[1]) for start_spot in start_spots):
        count += 1

print(count)



python基于django框架航空订票管理系统设计与实现mysql数据库(项目源码+文档说明),含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分看,下载下来,简单部署,就可以使用。该项目可以直接作为毕设、期末大作业使用,代码都在里面,系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! python基于django框架航空订票管理系统设计与实现mysql数据库(项目源码+文档说明)python基于django框架航空订票管理系统设计与实现mysql数据库(项目源码+文档说明)python基于django框架航空订票管理系统设计与实现mysql数据库(项目源码+文档说明)python基于django框架航空订票管理系统设计与实现mysql数据库(项目源码+文档说明)python基于django框架航空订票管理系统设计与实现mysql数据库(项目源码+文档说明)python基于django框架航空订票管理系统设计与实现mysql数据库(项目源码+文档说明)python基于django框架航空订票管理系统设计与实现mysql数据库(项目源码+文档说明)python基于django框架航空订票管理系统设计与实现mysql数据库(项目源码+文档说明)python基于django框架航空订票管理系统设计与实现mysql数据库(项目源码+文档说明)python基于django框架航空订票管理系统设计与实现mysql数据库(项目源码+文档说明)python基于django框架航空订票管理系统设计与实现mysql数据库(项目源码+文档说明)python基于django框架航空订票管理系统设计与实现mysql数据库(项目源码+文档说明)python基于django框架航空
内容概要:本文档详细解析了WindowManagerService(WMS)的启动流程、核心成员及其功能,涵盖WMS启动过程中所创建的重要成员、窗口管理、窗口动画、输入系统中转、Surface管理等方面。文档首先介绍了WMS的基本概念,包括Window、Surface、WindowManager、PhoneWindowManager等,并通过SampleWindow案例演示了窗口的创建、绘制与销毁过程。随后,深入探讨了WMS启动流程、成员变量的初始化、窗口添加与布局调整、窗口令牌(WindowToken)、窗口状态(WindowState)及显示内容(DisplayContent)的管理机制。此外,还详细解释了窗口的显示次序(z-order)的确定方法及窗口动画的管理。最后,文档通过JUnit测试验证了WMS中关键组件的功能。 适合人群:具备一定Android开发基础,特别是对窗口管理和渲染机制有兴趣的研发人员,尤其是工作1-3年的Android开发工程师。 使用场景及目标:①理解WMS在Android系统中的角色与功能;②掌握窗口创建、管理及销毁的具体流程;③熟悉窗口令牌、窗口状态、显示内容等核心概念;④了解窗口显示次序的确定规则及窗口动画的管理机制;⑤通过JUnit测试加深对WMS关键组件的理解。 其他说明:本文档不仅适用于深入学习WMS的开发者,也为希望深入了解Android系统底层机制的研究人员提供了宝贵的参考资料。文中提供的代码示例和流程图有助于读者更好地理解和实践WMS的相关概念。建议读者结合实际项目进行练习,以巩固所学知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值