解题思路:
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语言代码)浏览:691 |
字符串输入输出函数 (Java代码)浏览:1497 |
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:1113 |
【排队买票】 (C语言代码)浏览:944 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:903 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:676 |
图形输出 (C语言代码)浏览:1019 |
A+B for Input-Output Practice (III) (C语言代码)浏览:455 |
剔除相关数 (C语言代码)浏览:1156 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:515 |