相对论大师-记录型正负性质BFS/图论-链表/数据结构
看到这一题我的第一个思路就是双向bfs
起点是a,终点还是a,但是flag是相反的(“越”的方向)
tip1.可以用字典vis来存储flag
刚开始初始化时vissta,visend一个对应0、1
要求两个队列相接的时候flag要相同
tip2.get_nei函数
读取输入的时候用字典存储了点之间的关系
那么get_nei的时候就需要返回可能的下个节点以及new_flag
new_flag还是在bfs中判断,因为读取输入的时候是用0表示同向,1表示反向
tip3.存储中间过程
由于触碰点是起点和终点中间,所以我们需要记录前驱节点从而进行回溯
那么最适合的就是链表
from collections import deque,defaultdictd=defaultdict(set)n=int(input())for i in range(n):a,n1,b,n2=input().split()if n1==n2:d[a].add((b,0))#明显不能双向:否则会Yu 1 Yuci 0 Yuci 0 Yu 0 = Yu 1 Yu 0#d[b].add((a,0))#双向图?else:d[a].add((b,1))#d[b].add((a,1))def get_nei(cur):neis=d[cur]return neisdef bfs(k):sta=end=kstaq=deque([sta])endq=deque([end])vissta={sta:1}#用0,1表示相对性visend={end:0}presta={sta:None}#记录前驱节点preend={end:None}while staq and endq:ls=len(staq)le=len(endq)if ls<=le:for _ in range(ls):#当前层cur=staq.popleft()flag=vissta[cur]for nei,k in get_nei(cur): #解包if k:nflag= flag #0,1间取反else:nflag=not flagif nei not in vissta:vissta[nei]=nflagstaq.append(nei)presta[nei]=curif nei in visend and visend[nei]==vissta[nei]:return build_path(nei,presta,preend)else:for _ in range(le):cur=endq.popleft()flag=visend[cur]for nei,k in get_nei(cur):if k:nflag=not flag #0,1间取反else:nflag=flagif nei not in visend:visend[nei]=nflagendq.append(nei)preend[nei]=curif nei in vissta and vissta[nei]==visend[nei]:return build_path(nei,presta,preend)return 0def build_path(meet,presta,preend):path_sta=[]cur=meetwhile cur is not None:#开始链表回溯path_sta.append(cur)cur=presta[cur]path_sta.reverse()#掉头,方面后面衔接path_end=[]cur=preend[meet]while cur is not None:path_end.append(cur)cur=preend[cur]return path_sta+path_endprint(d)for i in d:k=bfs(i)print(k)'''不能dfs:不知道何时停止
def dfs()
'''
但是这段代码其实是错的
因为d[x]存的是x后面的节点,是单向的
所以无法从d[x]得到从终点返回的节点,只有d[k]=x遍历字典才能得到k,那还不如单向bfs
from collections import deque
from collections import defaultdictd = defaultdict(list)n = int(input())
for _ in range(n):a, a_flag, b, b_flag = input().split()a_flag = int(a_flag)b_flag = int(b_flag)d[(a, a_flag)].append((b, b_flag))shortest_path = Nonenodes = set()
for key in d:nodes.add(key[0])for b, _ in d[key]:nodes.add(b)
nodes = list(nodes)for sta in nodes:for start_flag in [0, 1]:target_flag = 1 - start_flagvissta = {}staq = deque()staq.append((sta, start_flag, []))vissta[(sta, start_flag)] = Truefound = Falsewhile staq and not found:cur, flag, path_edges = staq.popleft()if cur == sta and flag == target_flag:if shortest_path is None or len(path_edges) < len(shortest_path):shortest_path = path_edgesfound = Truebreakfor (nei, nei_flag) in d.get((cur, flag), []):if (nei, nei_flag) not in vissta:vissta[(nei, nei_flag)] = Truenew_path = path_edges + \[(cur, flag, nei, nei_flag)]staq.append((nei, nei_flag, new_path))if found and len(shortest_path) == 0:break if shortest_path and len(shortest_path) == 0:break output_steps = []
for step in shortest_path:a, a_flag, b, b_flag = stepoutput_steps.append(f"{a} {a_flag} {b} {b_flag}")sta = shortest_path[0][0]
start_flag = shortest_path[0][1]
end_flag = 1 - start_flagprint(f"{' '.join(output_steps)} = {sta} {start_flag} {sta} {end_flag}")
相关文章:

相对论大师-记录型正负性质BFS/图论-链表/数据结构
看到这一题我的第一个思路就是双向bfs 起点是a,终点还是a,但是flag是相反的(“越”的方向) tip1.可以用字典vis来存储flag 刚开始初始化时vissta,visend一个对应0、1 要求两个队列相…...
研发内控新规下的合规之道:维拉工时助力企业穿越IPO审查雷区
📌 背景 | 全面注册制下,研发内控成“必修课” 在全面注册制背景下,证监会发布的《监管规则适用指引——发行类第9号:研发人员及研发投入》(简称“发行类9号”),对企业的研发费用归集、研发工时…...

Jenkins流水线管理工具
文章目录 前言: DevOps时代的自动化核心 —Jenkins一、Jenkins是什么?二、Linux安装Jenkinswar包方式安装依赖环境下载 Jenkins WAR 包启动 Jenkins 服务启动日志验证配置插件镜像源 docker镜像方式安装依赖环境拉取 Jenkins 镜像运行 Jenkins 容器获取初…...

嵌入式开发:基础知识介绍
一、嵌入式系统 1、介绍 以提高对象体系智能性、控制力和人机交互能力为目的,通过相互作用和内在指标评价的,嵌入到对象体系中的专用计算机系统。 2、分类 按其形态的差异,一般可将嵌入式系统分为:芯片级(MCU、SoC&am…...

el-table中el-input的autofocus无法自动聚焦的解决方案
需求 有一个表格展示了一些进度信息,进度信息可以修改,需要点击进度信息旁边的编辑按钮时,把进度变为输入框且自动聚焦,当鼠标失去焦点时自动请求更新接口。 注:本例以vue2 element UI为例 分析 这个需求看着挺简单…...

一文了解智慧教育顶刊TLT的研究热点
本文聚焦于IEEE Transactions on Learning Technologies(TLT)期刊,通过图文结合的方式,梳理了2025年第18卷的研究热点,帮助读者把握教育技术与人工智能交叉领域的研究进展,深入了解智能学习系统、自适应学习…...

统计术语学习
基期、现期 作为对比参照的时期称为基期,而相对于基期的称为现期。 描述具体数值时我们称之为基期量和现期量。 【例 1】2017 年比 2016 年第三产业 GDP 增长 6.8%, (2016)为基期,(2017) 为现…...
NEGATIVE LABEL GUIDED OOD DETECTION WITH PRETRAINED VISION-LANGUAGE MODELS
1. 介绍: 这篇论文也是基于CLIP通过后处理的方法实现的OOD的检测,但是设计点在于,之前的方法是使用的ID的类别,这篇工作是通过添加一些在语义上非常不同于ID的类别的外分布类来做的OOD检测。 CLIP做OOD检测的这个系列里面我看的以及记录的第一篇就是MCM的方法,这也是确实是…...

飞机会员日
各航空公司会员日日期 主要航空公司会员日整理如下(数据截至2025年3月最新信息): 1 2 中国国际航空(国航) 每月"同月同日"(如1月1日、2月2日类推) 中国南方航空(…...
解读《数据资产质量评估实施规则》:企业数据资产认证落地的关键指南
随着“数据要素市场”建设加速,数据资产逐步成为企业核心资产之一。2024年4月,由中国质量认证中心(CQC)发布的《数据资产质量评估实施规则》(编号:CQC96-831160-2024)正式实施,为企业…...
常用第三方库:flutter_boost混合开发
常用第三方库:flutter_boost混合开发 前言 在移动应用开发中,混合开发是一个非常重要的话题。特别是对于已有原生应用想要引入Flutter的团队来说,如何实现Flutter页面和原生页面的无缝整合就显得尤为关键。本文将深入介绍flutter_boost这个…...

论分布式事务及其解决方案 架构师论文范文(考试笔记)
请围绕“论分布式事务及其解决方案”论题,依次从以下三个方面进行论述。 1、概要叙述你参与分析设计的软件项目以及你在其中所承担的主要工作。 2、请介绍4种分布式事务的解决方案及简单说明。 3、具体阐述你参与的软件项目是如何做到分布式事务的,过程中…...

ROS 快速入门教程04
12.激光雷达工作原理 激光雷达的作用是探照周围障碍物的距离,按照测量维度可以分为单线雷达和多线雷达。 按照测量原理可以分为三角测距雷达和TOF雷达。按照工作方式可以分为固态雷达和机械旋转雷达。 本次讲解以TOF雷达为例,雷达发射器发射激光遇到障碍…...

2025 年导游证报考条件新政策解读与应对策略
2025 年导游证报考政策有了不少新变化,这些变化会对报考者产生哪些影响?我们又该如何应对?下面就为大家详细解读新政策,并提供实用的应对策略。 最引人注目的变化当属中职旅游类专业学生的报考政策。以往,中专学历报考…...

vscode切换Python环境
跑深度学习项目通常需要切换python环境,下面介绍如何在vscode切换python环境: 1.点击vscode界面左上角 2.在弹出框选择对应kernel...

Spark-Streaming(三)
一. kafka和flume的整合 任务需求一:利用flume监控某目录中新生成的文件,将监控到的变更数据发送给kafka,kafka将收到的数据打印到控制台 1. 在flume/conf/目录下添加flume-kafka.conf文件 配置文件如下 2. 启动flume和kafka消费者 3. 传入数据 查看fl…...

SQLite 是什么?
📌 一、SQLite 是什么? SQLite 是一个轻量级、嵌入式数据库,意思是它直接集成在你的 App 内部,不需要单独安装数据库服务端。 ✅ 特点: 特点说明本地使用所有数据保存在手机内部存储文件形式数据以 .db 文件形式存储…...
两段文本比对,高亮出差异部分
用法一:computed <div class"card" v-if"showFlag"><div class"info">*红色背景为已删除内容,绿色背景为新增内容</div><el-form-item label"与上季度比对:"><div class"comp…...
成熟的前端vue vite websocket,Django后端实现方案包含主动断开websocket连接的实现
可参考实现方式点击进入查看 具体实现方案如下所示: import { useWebsocketMsessageStore } from /stores/websocketMsessageStore.js import {ElMessage} from "element-plus"; import {useUserStore} from "/stores/userStore.js"; // impo…...
2.5 桥梁桥面系及附属结构施工
2.5.1 桥面系施工 1.排水设施 设置纵横坡及泄水孔,减少桥面积水、防排结合。汇水槽、泄水孔顶面高程低于桥面铺装10-15mm。泄水孔边缘设渗水盲沟泄水管下端至少应伸出构筑物底面100-150mm。泄水管通过竖向管道直接引至地面或雨水管线。竖向管道抱箍、卡环、定位卡…...
Markdown格式思维导图——用DeepSeek从PDF内容提取关键信息的有效方法
结构化PDF的思维导图提取方法 当PDF文档结构清晰,包含明确的章节和小节标题时,可以使用以下提示词: 读取上方的PDF,请帮我生成一个结构清晰的思维导图,包含以下内容: 1. 提取PDF中的主要标题作为思维导图…...

海之淀攻略
家长要做的功课 家长可根据孩子情况,需要做好以下功课: 未读小学的家长:了解小学小升初派位初中校额到校在读小学的家长:了解小升初派位初中校额到校在读初中的家长:了解初中校额到校 越是高年级的家长,…...

PCIe具体解释分析
参考文章 PCIe总线详解_STATEABC-GitCode 开源社区 https://zhuanlan.zhihu.com/p/652808759 PCI总线学习(一):PCI总线结构-CSDN博客 PCI——第1章——PCI总线的基本知识-CSDN博客 计算机中register、cache、memory的区别 - Lines Blog 什么是内存管理单元ÿ…...
【阿里云大模型高级工程师ACP习题集】2.5 优化RAG应用提升问答准确度(⭐️⭐️⭐️ 重点章节!!!)
习题集 【单选题】在RAG应用的文档解析与切片阶段,若遇到文档类型不统一,部分格式的文档不支持解析的问题,以下哪种解决方式不可行?( ) A. 开发对应格式的解析器 B. 转换文档格式 C. 直接忽略该类型文档 D. 改进现有解析器以支持更多格式 【多选题】在选择向量数据库时,…...

Golang | 迭代器模式
迭代器模式(Iterator Pattern)是一种行为型设计模式,它提供了一种顺序访问聚合对象(如列表、树等集合结构)中元素的方法,而无需暴露其底层实现细节。通过将遍历逻辑与集合本身解耦,迭代器模式使…...

使用命令行加密混淆C#程序
C#作为托管语言编译生成的IL中间代码极易被反编译工具还原源码。据统计,超过83%的商业软件曾遭遇过代码逆向风险,导致核心算法泄露、授权被跳过. 因此对于C#语言开发的程序来说, 在发布前进行混淆和加密非常有必要. 本文主要介绍如何使用恒盾C#混淆加密…...
MYSQL 常用数值函数 和 条件函数 详解
一、数值函数 1、ROUND(num, decimals) 四舍五入到指定小数位。 SELECT ROUND(3.1415, 2); -- 输出 3.142、ABS(num) 取绝对值 SELECT ABS(-10); -- 输出 103、CEIL(num) / FLOOR(num) 向上/向下取整 SELECT CEIL(3.2), FLOOR(3.7); -- 输出 4 和 34、MOD(num1, num2) 取…...

当智驾成标配,车企暗战升级|2025上海车展
文|刘俊宏 编|王一粟 智能化无处不在的2025年上海车展,回归了卖车的初衷。 光锥智能在展会暴走两天,最大的感触是今年的车展少了争奇斗艳,多了些许务实。 回顾智能汽车时代的三场重要车展。2023年的上海车展充满了…...
QuecPython+GNSS:实现快速定位
概述 QuecPython 结合 GNSS(全球导航卫星系统)模块为物联网设备提供开箱即用的定位能力解决方案。该方案支持 GPS/北斗/GLONASS/Galileo 多系统联合定位,为物联网开发者提供从硬件接入到云端服务的全栈式定位解决方案。 优势特点 多体系定…...
[java八股文][Java基础面试篇]设计模式
volatile和sychronized如何实现单例模式 public class SingleTon {// volatile 关键字修饰变量 防止指令重排序private static volatile SingleTon instance null;private SingleTon(){}public static SingleTon getInstance(){if(instance null){//同步代码块 只有在第一次…...