def find_working_services(dependencies, faulty_services):from collections import defaultdict, deque# 构建图的邻接表graph = defaultdict(list)all_services = setfor dep in dependencies:service1, service2 = dep.split('-')graph[service2].append(service1)all_services.add(service1)all_services.add(service2)# 使用BFS找到所有受故障服务影响的服务affected = set(faulty_services)queue = deque(faulty_services)while queue:current = queue.popleftfor neighbor in graph[current]:if neighbor not in affected:affected.add(neighbor)queue.append(neighbor)# 找到所有不受影响的服务working_services = [service for service in all_services if service not in affected]# 按依赖关系列表中的顺序排序order = {service: idx for idx, service in enumerate(all_services)}working_services.sort(key=lambda x: order[x])return ','.join(working_services) if working_services else ','# 读取输入dependencies = input.strip.split(',')faulty_services = input.strip.split(',')# 计算并输出结果print(find_working_services(dependencies, faulty_services))摘要:def find_working_services(dependencies, faulty_services):from collections import defaultdict, deque# 构建图的邻接表graph = defaultdict(li
代码说明:
1、输入处理:
读取依赖关系列表和故障服务列表。
2、构建图的邻接表:
使用 defaultdict 构建图的邻接表,表示每个服务依赖哪些其他服务。
使用 all_services 集合记录所有服务。
3、BFS遍历:
使用队列 queue 存储所有故障服务。
使用 affected 集合记录所有受故障服务影响的服务。
通过BFS遍历所有受故障服务影响的服务。
4、找到所有不受影响的服务:
从所有服务中排除受故障服务影响的服务,得到正常工作的服务列表。
5、按依赖关系列表中的顺序排序:
使用 order 字典记录每个服务在依赖关系列表中的顺序。
按顺序对正常工作的服务进行排序。
6、输出结果:
输出正常工作的服务列表,用半角逗号分隔。如果没有正常服务,则输出一个半角逗号。
来源:夏琳看科技