1 int maze[5][5] = {
2 { 0, 1, 1, 0, 0 },
3 { 0, 0, 1, 1, 0 },
4 { 0, 1, 1, 1, 0 },
5 { 1, 0, 0, 0, 0 },
6 { 0, 0, 1, 1, 0 }
7 };
1 #include <bits/stdc++.h>
2 #define N 5
3 using namespace std;
4 int maze[N][N] = {
5 { 0, 1, 1, 0, 0 },
6 { 0, 0, 1, 1, 0 },
7 { 0, 1, 1, 1, 0 },
8 { 1, 0, 0, 0, 0 },
9 { 0, 0, 1, 1, 0 }
10 };
11 int visited[N + 1] = { 0, };
12 void BFS(int start)
13 {
14 queue<int> Q;
15 Q.push(start);
16 visited[start] = 1;
17 while (!Q.empty())
18 {
19 int front = Q.front();
20 cout << front << " ";
21 Q.pop();
22 for (int i = 1; i <= N; i++)
23 {
24 if (!visited[i] && maze[front - 1][i - 1] == 1)
25 {
26 visited[i] = 1;
27 Q.push(i);
28 }
29 }
30 }
31 }
32 int main()
33 {
34 for (int i = 1; i <= N; i++)
35 {
36 if (visited[i] == 1)
37 continue;
38 BFS(i);
39 }
40 return 0;
41 }