@@ -8,6 +8,15 @@ def _input(message):
8
8
def initialize_unweighted_directed_graph (
9
9
node_count : int , edge_count : int
10
10
) -> dict [int , list [int ]]:
11
+ """
12
+ Example:
13
+ Edge 1: <node1> <node2> 1 2
14
+ Edge 2: <node1> <node2> 3 2
15
+ Edge 3: <node1> <node2> 2 4
16
+ >>> import io, sys ; sys.stdin = io.StringIO(chr(10).join(['1 2','3 2', '2 4'])) # input
17
+ >>> initialize_unweighted_directed_graph(4, 3)
18
+ Edge 1: <node1> <node2> Edge 2: <node1> <node2> Edge 3: <node1> <node2> {1: [2], 2: [4], 3: [2], 4: []}
19
+ """
11
20
graph : dict [int , list [int ]] = {}
12
21
for i in range (node_count ):
13
22
graph [i + 1 ] = []
@@ -21,6 +30,15 @@ def initialize_unweighted_directed_graph(
21
30
def initialize_unweighted_undirected_graph (
22
31
node_count : int , edge_count : int
23
32
) -> dict [int , list [int ]]:
33
+ """
34
+ Example:
35
+ Edge 1: <node1> <node2> 1 2
36
+ Edge 2: <node1> <node2> 3 2
37
+ Edge 3: <node1> <node2> 2 4
38
+ >>> import io, sys ; sys.stdin = io.StringIO(chr(10).join(['1 2','3 2', '2 4'])) # input
39
+ >>> initialize_unweighted_undirected_graph(4, 3)
40
+ Edge 1: <node1> <node2> Edge 2: <node1> <node2> Edge 3: <node1> <node2> {1: [2], 2: [1, 3, 4], 3: [2], 4: [2]}
41
+ """
24
42
graph : dict [int , list [int ]] = {}
25
43
for i in range (node_count ):
26
44
graph [i + 1 ] = []
@@ -35,6 +53,17 @@ def initialize_unweighted_undirected_graph(
35
53
def initialize_weighted_undirected_graph (
36
54
node_count : int , edge_count : int
37
55
) -> dict [int , list [tuple [int , int ]]]:
56
+ """
57
+ Example:
58
+ Edge 1: <node1> <node2> <weight> 1 2 1
59
+ Edge 2: <node1> <node2> <weight> 3 2 6
60
+ Edge 3: <node1> <node2> <weight> 2 4 10
61
+ Edge 4: <node1> <node2> <weight> 4 1 7
62
+ Edge 5: <node1> <node2> <weight> 4 3 12
63
+ >>> import io, sys ; sys.stdin = io.StringIO(chr(10).join(['1 2 1','3 2 6', '2 4 10', '4 1 7', '4 3 12'])) # input
64
+ >>> initialize_weighted_undirected_graph(4, 5)
65
+ Edge 1: <node1> <node2> <weight> Edge 2: <node1> <node2> <weight> Edge 3: <node1> <node2> <weight> Edge 4: <node1> <node2> <weight> Edge 5: <node1> <node2> <weight> {1: [(2, 1), (4, 7)], 2: [(1, 1), (3, 6), (4, 10)], 3: [(2, 6), (4, 12)], 4: [(2, 10), (1, 7), (3, 12)]}
66
+ """
38
67
graph : dict [int , list [tuple [int , int ]]] = {}
39
68
for i in range (node_count ):
40
69
graph [i + 1 ] = []
@@ -77,6 +106,14 @@ def initialize_weighted_undirected_graph(
77
106
78
107
79
108
def dfs (g , s ):
109
+ """
110
+ >>> dfs({1: [2, 3], 2: [4, 5], 3: [], 4: [], 5: []}, 1)
111
+ 1
112
+ 2
113
+ 4
114
+ 5
115
+ 3
116
+ """
80
117
vis , _s = {s }, [s ]
81
118
print (s )
82
119
while _s :
@@ -104,6 +141,17 @@ def dfs(g, s):
104
141
105
142
106
143
def bfs (g , s ):
144
+ """
145
+ >>> bfs({1: [2, 3], 2: [4, 5], 3: [6, 7], 4: [], 5: [8], 6: [], 7: [], 8: []}, 1)
146
+ 1
147
+ 2
148
+ 3
149
+ 4
150
+ 5
151
+ 6
152
+ 7
153
+ 8
154
+ """
107
155
vis , q = {s }, deque ([s ])
108
156
print (s )
109
157
while q :
@@ -128,6 +176,14 @@ def bfs(g, s):
128
176
129
177
130
178
def dijk (g , s ):
179
+ """
180
+ dijk({1: [(2, 7), (3, 9), (6, 14)], 2: [(1, 7), (3, 10), (4, 15)], 3: [(1, 9), (2, 10), (4, 11), (6, 2)], 4: [(2, 15), (3, 11), (5, 6)], 5: [(4, 6), (6, 9)], 6: [(1, 14), (3, 2), (5, 9)]}, 1)
181
+ 7
182
+ 9
183
+ 11
184
+ 20
185
+ 20
186
+ """
131
187
dist , known , path = {s : 0 }, set (), {s : 0 }
132
188
while True :
133
189
if len (known ) == len (g ) - 1 :
0 commit comments