2
2
# https://en.wikipedia.org/wiki/Breadth-first_search
3
3
4
4
import queue
5
+ from typing import Tuple , List , Dict
5
6
6
-
7
- def swap (a , b ):
7
+ def swap (a : int , b : int ) -> Tuple [int , int ]:
8
8
a ^= b
9
9
b ^= a
10
10
a ^= b
11
11
return a , b
12
12
13
13
14
14
# creating sparse table which saves each nodes 2^i-th parent
15
- def creatSparse (max_node , parent ) :
15
+ def creatSparse (max_node : int , parent : List [ List [ int ]]) -> List [ List [ int ]] :
16
16
j = 1
17
17
while (1 << j ) < max_node :
18
18
for i in range (1 , max_node + 1 ):
@@ -22,7 +22,7 @@ def creatSparse(max_node, parent):
22
22
23
23
24
24
# returns lca of node u,v
25
- def LCA (u , v , level , parent ) :
25
+ def LCA (u : int , v : int , level : List [ int ] , parent : List [ List [ int ]]) -> List [ List [ int ]] :
26
26
# u must be deeper in the tree than v
27
27
if level [u ] < level [v ]:
28
28
u , v = swap (u , v )
@@ -45,7 +45,7 @@ def LCA(u, v, level, parent):
45
45
# sets every nodes direct parent
46
46
# parent of root node is set to 0
47
47
# calculates depth of each node from root node
48
- def bfs (level , parent , max_node , graph , root = 1 ):
48
+ def bfs (level : List [ int ] , parent : List [ List [ int ]] , max_node : int , graph : Dict [ int , int ], root = 1 ) -> Tuple [ List [ int ], List [ List [ int ]]] :
49
49
level [root ] = 0
50
50
q = queue .Queue (maxsize = max_node )
51
51
q .put (root )
@@ -59,7 +59,7 @@ def bfs(level, parent, max_node, graph, root=1):
59
59
return level , parent
60
60
61
61
62
- def main ():
62
+ def main () -> None :
63
63
max_node = 13
64
64
# initializing with 0
65
65
parent = [[0 for _ in range (max_node + 10 )] for _ in range (20 )]
0 commit comments