BFS_DFS.cpp 479 B

123456789101112131415161718192021
  1. // BFS and DFS with adjacency matrix G
  2. void bfs(int from) {
  3. // void dfs(int from) {
  4. queue<int> Q;
  5. // stack<int> Q;
  6. int visited[1000];
  7. memset(visited, 0, sizeof(visited));
  8. Q.push(from); // parent[from] = -1
  9. visited[from] = 1;
  10. while(!Q.empty()) {
  11. int s = Q.front();
  12. // int s = Q.top();
  13. Q.pop();
  14. for(int i = 1; i <= N; i++)
  15. if(G[s][i] && !visited[i]) {
  16. Q.push(i); // parent[i] = s
  17. visited[i] = 1;
  18. }
  19. // deal with s
  20. }
  21. }