用一个邻接矩阵表示图
#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,因为每个点自己不能到自己
else
e[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