bfs using queue