图的深度优先遍历

来源:互联网 发布:es的数据清理方案 编辑:程序博客网 时间:2024/04/27 20:08

用一个邻接矩阵表示图

#include<iostream>using namespace std;int e[101][101], sum,n,m, book[101];void dfs(int cur) {cout << cur;sum++;if (sum == n)return;for (int i = 1; i <= n; i++) {if (e[cur][i] == 1&&book[i]==0) {book[i] = 1;dfs(i);}}return;}int main() {int a, b,i,j;cout << "输入元素个数和顶点之间的边的个数" << endl;cin >> n>>m;for ( i = 1; i<=n; i++)//初始化二维矩阵for ( j = 1; j <= n; j++) {if (i == j)e[i][j] = 0;//对角线都是0,因为每个点自己不能到自己elsee[i][j] = 9999999;//其他点设为无穷大}cout << "输入" << endl;for (i = 1; i <=m; i++) {cin >> a >> b;e[a][b] = 1;//顶点i到顶点j有边e[b][a] = 1;//由于是无向图,反过来一样}book[1] = 1;//从1号顶点出发dfs(1);return 0;}


例如:

输入

5 5

1 2

1 3

1 5

2 4

3 5

输出1 2 4 3 5

1 0
原创粉丝点击