原题链接:蓝桥杯2013年第四届真题-危险系数
解题思路:
DFS
注意事项:
第六行,当深搜找到一条路径后需要把终点的“已到达”状态删去,避免判断终点的到达次数(因为终点不能算作所谓的“关键节点”),当然也可不写这句,给结果减一。
参考代码:
def dfs(start, end): global visited, map_, visited_times, route if start == end: route += 1 visited[end] = False for i in range(1, m + 1): visited_times[i] += 1 if visited[i] else 0 return for i in range(len(map_[start])): if not visited[map_[start][i]]: visited[map_[start][i]] = True dfs(map_[start][i], end) visited[map_[start][i]] = False m, n = map(int, input().split()) map_ = [[] for _ in range(m + 1)] visited = [False for i in range(m + 1)] visited_times = [0 for _ in range(m + 1)] route = 0 for i in range(n): a, b = map(int, input().split()) map_[a].append(b) map_[b].append(a) start, end = map(int, input().split()) dfs(start, end) res = sum(1 for i in range(1, m + 1) if visited_times[i] == route) print(res)
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复