2052. 图的dfs遍历

代码

#include<bits/stdc++.h>
using namespace std;
int a[15][15];
bool b[15];
int n,e;
void dfs(int xy)
{
	b[xy]=true;
	cout<<xy<<" ";
	for(int i=1;i<=n;i++)
		if(a[xy][i]==1&&!b[i])
			dfs(i);
}
int main()
{
	int x,y,i;
	cin>>n>>e;
	for(i=1;i<=e;i++)
	{
		cin>>x>>y;
		a[x][y]=1;
		a[y][x]=1;
	}
	dfs(1);
	return 0;
}

 记得点赞+关注+收藏!!!谢谢!!!

这几个月忙,没有及时更新,请大家谅解。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一份示例代码,可以实现你所需要的三个功能: ```python import queue # 定义的邻接矩阵,这里使用二维列表表示 graph = [ [0, 1, 1, 0, 0, 0], [1, 0, 0, 1, 1, 0], [1, 0, 0, 0, 0, 1], [0, 1, 0, 0, 0, 1], [0, 1, 0, 0, 0, 1], [0, 0, 1, 1, 1, 0], ] # 定义深度优先遍历函数 def dfs(graph, start, visited=None): if visited is None: visited = set() visited.add(start) print(start, end=' ') for next_node, connected in enumerate(graph[start]): if connected and next_node not in visited: dfs(graph, next_node, visited) # 定义广度优先遍历函数 def bfs(graph, start): visited = set() q = queue.Queue() q.put(start) visited.add(start) while not q.empty(): node = q.get() print(node, end=' ') for next_node, connected in enumerate(graph[node]): if connected and next_node not in visited: q.put(next_node) visited.add(next_node) # 定义最短路径函数 def shortest_path(graph, start): dist = [float('inf')] * len(graph) dist[start] = 0 q = queue.Queue() q.put(start) while not q.empty(): node = q.get() for next_node, connected in enumerate(graph[node]): if connected and dist[node] + 1 < dist[next_node]: dist[next_node] = dist[node] + 1 q.put(next_node) return dist # 深度优先遍历 print('深度优先遍历:') dfs(graph, 0) print() # 广度优先遍历 print('广度优先遍历:') bfs(graph, 0) print() # 最短路径 print('最短路径:') dist = shortest_path(graph, 0) print(dist) ``` 在这个示例代码中,我们使用了以下三个函数: - `dfs(graph, start, visited=None)`:深度优先遍历函数,其中 `graph` 表示邻接矩阵,`start` 表示遍历的起点,`visited` 表示已经访问过的节点集合,如果 `visited` 为 `None`,则表示还没有访问任何节点。该函数会输出遍历序列。 - `bfs(graph, start)`:广度优先遍历函数,与深度优先遍历函数类似,其中 `graph` 和 `start` 含义相同,该函数也会输出遍历序列。 - `shortest_path(graph, start)`:最短路径函数,其中 `graph` 和 `start` 含义相同,该函数会返回一个列表,表示源点 `start` 到中每个点的最短路径长度。在本示例代码中,我们使用了队列 `queue.Queue()` 来辅助实现广度优先遍历和最短路径算法。 当然,在实际应用中,以上三个函数的具体实现会因为不同的应用场景而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值