Add url and typing hint for BFS
diff --git a/graphs/bfs.py b/graphs/breadth_first_search_2.py
similarity index 69%
rename from graphs/bfs.py
rename to graphs/breadth_first_search_2.py
index 9d9b1ac037d9..0c87b5d8bf3d 100644
--- a/graphs/bfs.py
+++ b/graphs/breadth_first_search_2.py
@@ -1,9 +1,7 @@
 """
-BFS.
-
+https://en.wikipedia.org/wiki/Breadth-first_search
 pseudo-code:
-
-BFS(graph G, start vertex s):
+breadth_first_search(graph G, start vertex s):
 // all nodes initially unexplored
 mark s as explored
 let Q = queue data structure, initialized with s
@@ -13,9 +11,10 @@
         if w unexplored:
             mark w as explored
             add w to Q (at the end)
-
 """
 
+from typing import Set, Dict
+
 G = {
     "A": ["B", "C"],
     "B": ["A", "D", "E"],
@@ -26,13 +25,13 @@
 }
 
 
-def bfs(graph, start):
+def breadth_first_search(graph: Dict, start: str) -> Set[str]:
     """
-    >>> ''.join(sorted(bfs(G, 'A')))
+    >>> ''.join(sorted(breadth_first_search(G, 'A')))
     'ABCDEF'
     """
-    explored, queue = set(), [start]  # collections.deque([start])
-    explored.add(start)
+    explored = {start}
+    queue = [start]
     while queue:
         v = queue.pop(0)  # queue.popleft()
         for w in graph[v]:
@@ -43,4 +42,4 @@ def bfs(graph, start):
 
 
 if __name__ == "__main__":
-    print(bfs(G, "A"))
+    print(breadth_first_search(G, "A"))

### **Describe your change:**

Add typing for bfs and make the code more brief.

* [ ] Add an algorithm?
* [ ] Fix a bug or typo in an existing algorithm?
* [x] Documentation change?

### **Checklist:**
* [x] I have read [CONTRIBUTING.md](https://github.com/TheAlgorithms/Python/blob/master/CONTRIBUTING.md).
* [x] This pull request is all my own work -- I have not plagiarized.
* [x] I know that pull requests will not be merged if they fail the automated tests.
* [x] This PR only changes one algorithm file.  To ease review, please open separate PRs for separate algorithms.
* [x] All new Python files are placed inside an existing directory.
* [x] All filenames are in all lowercase characters with no spaces or dashes.
* [x] All functions and variable names follow Python naming conventions.
* [x] All function parameters and return values are annotated with Python [type hints](https://docs.python.org/3/library/typing.html).
* [x] All functions have [doctests](https://docs.python.org/3/library/doctest.html) that pass the automated testing.
* [x] All new algorithms have a URL in its comments that points to Wikipedia or other similar explanation.
* [x] If this pull request resolves one or more open issues then the commit message contains `Fixes: #{$ISSUE_NO}`.
