#include<iostream> #include<cstring> #include<cstdio> using namespace std; bool a[110][110]; bool flag[110]; int n,e; void init(); void dfs(int x); int main() { //freopen("dfs1.in","r",stdin); //freopen("dfs5.out","w",stdout); init(); dfs(1); return 0; } void init() { cin>>n>>e; memset(flag,0,sizeof(flag)); memset(a,0,sizeof(a)); int x,y; for(int i=1;i<=e;++i) { cin>>x>>y; a[x][y]=1;//无向图处理双向 a[y][x]=1; } } void dfs(int x) { cout<<x<<' '; flag[x]=1;//把遍历点设为已访问 for(int i=1;i<=n;++i) //寻找相邻连通的下一个节点 if(!flag[i]&&a[x][i]==1) dfs(i);//如果找到以这个节点接着遍历 } /************************************************************** Problem: 2052 User: admin Language: C++ Result: Accepted Time:25 ms Memory:2084 kb ****************************************************************/