fork download
  1. #include <iostream>
  2. #include <queue>
  3. #include <cstdio>
  4.  
  5. int arr[1001][1001] = {0,};
  6. int visit[1001]= {0,};
  7. int n,m,v;
  8. using namespace std;
  9. void dfs(int v){
  10. visit[v] = 1;
  11. for(int i = 1; i <= n; i++){
  12. if(visit[i] == 0 && arr[v][i] == 1){
  13. printf("%d ",i);
  14. dfs(i);
  15. }
  16. }
  17. }
  18.  
  19. void bfs(int v){
  20. queue<int> q;
  21. q.push(v);
  22. visit[v] = 1;
  23. printf("%d ",v);
  24. while(!q.empty()){
  25. int he = q.front();
  26. q.pop();
  27. for(int i = 1; i <= n; i++){
  28. if(visit[i] == 0 && arr[he][i] == 1){
  29. q.push(i);
  30. printf("%d ",i);
  31. visit[i] = 1;
  32. }
  33. }
  34. }
  35.  
  36. }
  37. int main() {
  38. scanf("%d %d %d ",&n,&m,&v);
  39. for(int i = 0; i < m; i++){
  40. int x, y;
  41. scanf("%d %d ",&x, &y);
  42. arr[x][y] = arr[y][x] = 1;
  43. }
  44. printf("%d ",v);
  45. dfs(v);
  46. puts("");
  47. for(int i = 1; i <= n; i++) visit[i] = 0;
  48. bfs(v);
  49. return 0;
  50. }
Success #stdin #stdout 0s 19152KB
stdin
4 5 1
1 2
1 3
1 4
2 4
3 4
stdout
1 2 4 3 
1 2 3 4