#include <stdio.h> #include <string.h> int n,Graph[51][51],visited[51],Check(); void DFS(int x); int main() { scanf("%d",&n); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { scanf("%d",&Graph[i][j]); } } memset(visited,0,sizeof(visited)); DFS(0); return 0; } int Check() { int flag; flag=1; for(int i=0;i<n;i++) { if(visited[i]==0) { flag=0; break; } } return flag; } void DFS(int x) { visited[x]=1; printf("%d ",x); if(Check()) { printf("\n"); return; } for(int i=0;i<n;i++) { if(Graph[x][i]!=0&&visited[i]==0) { DFS(i); } } }
时间: 2023-12-03 08:02:27 浏览: 88
#include <stdio.h>
4星 · 用户满意度95%
这是一个使用深度优先搜索(DFS)遍历无向图的代码。程序输入图的大小n,以及每个节点之间的连接情况。程序的输出是从节点0开始的遍历顺序。在DFS函数中,visited数组用于标记节点是否被访问过,Check函数用于判断是否所有节点都已被访问过。如果所有节点都已被访问过,则程序输出一个换行符并结束。否则,DFS函数会递归遍历与当前节点相邻的未被访问过的节点。
阅读全文