1510: 数据结构基础11-图的深度优先遍历

题目描述


读入一个邻接矩阵存储的无向图,输出它的深度优先遍历序列。

输入


第1行1个整数n,表示图中的顶点数,2<=n<=100
接下来的n行是一个n*n的邻接矩阵,a[i][j]=1表示顶点i和顶点j之间有直接边相连,a[i][j]=0表示没有直接边相连,保证i=k时a[i][j]=0,且a[i,j]=a[j,i].

输出


输出1~n的某一种排列,表示从顶点1开始,对该图进行深度优先遍历得到的顶点序列,每两个数之间,用一个“-”分隔

样例输入


8
0 1 1 0 0 0 0 0
1 0 0 1 1 0 0 0
1 0 0 0 0 0 1 1
0 1 0 0 0 1 0 0
0 1 0 0 0 1 0 0
0 0 0 1 1 0 0 0
0 0 1 0 0 0 0 1
0 0 1 0 0 0 1 0

样例输出


1-2-4-6-5-3-7-8

提示


问题分析:
图的深度优先遍历指,先任意找一个顶点入栈,即为栈顶元素,然后找到跟栈顶元素相连的一个顶点入栈,接着继续把跟栈顶元素相连的一个顶点入栈,若栈顶元素没有相连的顶点或者相连的顶点都已经入过栈,那么栈顶元素就出栈,循环直到栈为空。那么元素的入栈顺序就是图的深度优先遍历

来源/分类



请先 登录 后评论
  • 0 关注
  • 0 收藏,372 浏览
  • 轩爸 提出于 2019-08-02 22:10

相似问题