构造一个无向图,从给定起点开始进行深度优先遍历和广度优先遍历,并输出相应的遍历序列。 输入格式: 输入第一行给出三个正整数,分别表示无向图的节点数N(1<N≤10)、边数M(≤50)和遍历的起始节点编号S(
时间: 2024-02-15 08:04:09 浏览: 282
很高兴为您解答问题!这是一个与深度优先遍历和广度优先遍历相关的问题,需要对图的遍历算法有所了解。
首先,我们需要构造一个无向图。根据题目中给出的节点数N和边数M,我们可以使用邻接矩阵或邻接表来表示图。为了方便起见,我们可以使用邻接矩阵来表示图。
代码如下:
```python
N, M, S = map(int, input().split()) # 输入节点数、边数和起始节点编号
graph = [[0] * N for i in range(N)] # 初始化邻接矩阵
for i in range(M):
u, v = map(int, input().split()) # 输入边的两个节点
graph[u][v] = graph[v][u] = 1 # 在邻接矩阵中标记边
```
接下来,我们可以使用深度优先遍历和广度优先遍历算法来遍历图。
深度优先遍历算法(DFS):
```python
def DFS(graph, start):
visited = [False] * len(graph) # 标记所有节点为未访问
stack = [start] # 使用栈来记录遍历顺序
while stack:
node = stack.pop() # 取出栈顶节点
if not visited[node]:
visited[node] = True # 标记节点为已访问
print(node, end=' ') # 输出节点序号
for i in range(len(graph[node])):
if graph[node][i] == 1 and not visited[i]:
stack.append(i) # 将未访问的相邻节点入栈
```
广度优先遍历算法(BFS):
```python
from collections import deque
def BFS(graph, start):
visited = [False] * len(graph) # 标记所有节点为未访问
queue = deque([start]) # 使用队列来记录遍历顺序
while queue:
node = queue.popleft() # 取出队首节点
if not visited[node]:
visited[node] = True # 标记节点为已访问
print(node, end=' ') # 输出节点序号
for i in range(len(graph[node])):
if graph[node][i] == 1 and not visited[i]:
queue.append(i) # 将未访问的相邻节点入队
```
最后,我们可以分别调用DFS和BFS函数,并输出遍历序列。
代码如下:
```python
DFS(graph, S)
print()
BFS(graph, S)
```
希望能解决您的问题!
阅读全文
相关推荐
![c](https://img-home.csdnimg.cn/images/20250102104920.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)