解题思路:
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 人评分
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:653 |
C语言程序设计教程(第三版)课后习题6.11 (C语言代码)浏览:2080 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1294 |
【矩阵】 (C++代码)浏览:936 |
矩阵转置 (C语言代码)浏览:782 |
C语言程序设计教程(第三版)课后习题8.2 (C语言代码)浏览:1028 |
小O的数字 (C语言代码)浏览:1406 |
A+B for Input-Output Practice (I) (C语言代码)浏览:570 |
快速排序算法1浏览:877 |
多组数据新方法浏览:355 |