fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. // ada N node
  4. int N;
  5.  
  6. // ada M edge
  7. int M;
  8.  
  9. // apakah node ke-i sudah terkunjungi?
  10. // false jika belum dan true jika sudah
  11. bool terkunjungi[1001];
  12.  
  13. // representasi graf menggunakan adjacency list
  14. vector<int>adj[1001];
  15.  
  16. void dfs(int now){
  17. // memasuki node `now`
  18. cout << "Masuk ke node " << now << "\n";
  19.  
  20. // tandai karena node `now` sudah kita kunjungi
  21. terkunjungi[now]=true;
  22.  
  23. // Periksa seluruh tetangga dari node `now`
  24. for(auto next:adj[now]){
  25.  
  26. // Cek apakah node `next` sudah dikunjungi atau belum
  27. if(!terkunjungi[next]){
  28.  
  29. // lakukan dfs pada node `next`
  30. dfs(next);
  31. }
  32. }
  33. }
  34. int main(){
  35. cin >> N >> M;
  36. for(int i=1; i<=M; i++){
  37. int U,V;
  38. cin >> U >> V;
  39.  
  40. // menambahkan edge dari U ke V ke dalam adjacency list
  41. adj[U].push_back(V);
  42.  
  43. // menambahkan edge dari V ke U ke dalam adjacency list
  44. adj[V].push_back(U);
  45. }
  46.  
  47. // Solusi menggunakan rekursi
  48. // kunjungan awal ada di node 1
  49. dfs(1);
  50. }
Success #stdin #stdout 0s 5652KB
stdin
11 13
1 2
1 6
1 7
1 10
1 11
2 3
2 4
3 4
4 5
7 8
7 9
9 10
10 11
stdout
Masuk ke node 1
Masuk ke node 2
Masuk ke node 3
Masuk ke node 4
Masuk ke node 5
Masuk ke node 6
Masuk ke node 7
Masuk ke node 8
Masuk ke node 9
Masuk ke node 10
Masuk ke node 11