#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<vector> #include<queue> using namespace std; const int maxn=1e5+10; const int inf=0x3f3f3f3f; int ant; bool vis[maxn]; vector<int>v[maxn];//存图 void dfs(int ant) { printf("%d",ant); vis[ant]=1; for(int i=0;i<v[ant].size();i++) { if(!vis[v[ant][i]]) dfs(v[ant][i]); } } void bfs(int ant) { queue<int>q; q.push(ant); while(!q.empty()) { int x=q.front(); q.pop(); printf("%d",x); vis[x]=1; for(int i=0;i<v[x].size();i++) { if(!vis[v[x][i]]) { vis[v[x][i]]=1; q.push(v[x][i]); } } } } void abc(int ans) { if(ans==0) dfs(ant); else bfs(ant); } int main() { int n,k; int x,y; int mx=-1; bool flag=0; int ans; printf("请输入点的个数:\n"); scanf("%d",&n); printf("请输入各点:\n"); for(int i=0;i<n;i++) { scanf("%d",&x); if(!flag) { ant=x; flag=1; } } printf("请输入边的个数:\n"); scanf("%d",&k); printf("请输入各边:\n"); for(int i=0;i<k;i++) { scanf("%d%d",&x,&y); v[x].push_back(y); v[y].push_back(x); } printf("请选择遍历方式:\ndfs:0\nbfs:1\n"); scanf("%d",&ans); while(ans!=1&&ans!=0) { printf("请重新选择遍历方式\n"); printf("请选择遍历方式:\ndfs:0\nbfs:1\n"); scanf("%d",&ans); } abc(ans); return 0; } /* 8 1 2 3 4 5 6 7 8 9 1 2 1 3 2 4 2 5 4 8 5 8 3 6 3 7 6 7 1 */