# Tutorial Graph Traversal : BFS
###### tags: `graph` `bfs`
## Karakteristik BFS
- Melusuri node tepat sekali
- Mengunjungi node yang lebih dekat dengan node awal
- Dapat diimplementasikan dengan `queue`
## Contoh Soal Sederhana
Diberikan $N$ node dan $M$ undirected edge. Tuliskan semua urutan penelusuran dari node $1$ ke $N$ jika kita harus mengunjungi node yg lebih dekat dengan node awal terlebih dahulu.
### Batasan
- $2 \le N \le 1000$
- $1 \le M \le \min(1000,\frac{N\times(N+1)}{2})$
### Format Masukan
<pre>
N M
U<sub>1</sub> V<sub>1</sub>
U<sub>2</sub> V<sub>2</sub>
...
U<sub>M</sub> V<sub>M</sub>
</pre>
### Format Keluaran
Keluarkan beberapa baris berisi sebuah string yang menyatakan urutan-urutan penelusuran. Jika sekarang kita sedang memasuki sebuah node, keluarkan `Masuk ke node <index node sekarang>`.
Jika ada lebih dari satu jawaban, keluarkan yang mana saja.
### Contoh Masukan
```
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
```
### Contoh Keluaran
Salah satu keluaran yang mungkin
```
Masuk ke node 1
Masuk ke node 2
Masuk ke node 6
Masuk ke node 7
Masuk ke node 10
Masuk ke node 11
Masuk ke node 3
Masuk ke node 4
Masuk ke node 8
Masuk ke node 9
Masuk ke node 5
```
## Solusi
<details>
<summary>Solusi menggunakan queue</summary>
<a href="https://ideone.com/UtHXDK">link</a>
</details>
## Kompleksitas waktu
1. $O(N^2)$, jika menggunakan *adjacency matrix*
2. $O(N+M)$, jika menggunakan *adjacency list*