Add new course
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
class Graph:
|
||||
def __init__(self, adj_matrix):
|
||||
self.adj_matrix = adj_matrix
|
||||
self.V = len(adj_matrix)
|
||||
|
||||
def df_print(self, start):
|
||||
visited = [False] * self.V
|
||||
self.dfs(start, visited)
|
||||
print()
|
||||
|
||||
def dfs(self, start, visited):
|
||||
visited[start] = True
|
||||
print(start, end=' ')
|
||||
for i in range(self.V):
|
||||
if self.adj_matrix[start][i] > 0 and not visited[i]:
|
||||
self.dfs(i, visited)
|
||||
|
||||
def bf_print(self, start):
|
||||
visited = [False] * self.V
|
||||
queue = []
|
||||
queue.append(start)
|
||||
visited[start] = True
|
||||
while queue:
|
||||
start = queue.pop(0)
|
||||
print(start, end=' ')
|
||||
for i in range(self.V):
|
||||
if self.adj_matrix[start][i] > 0 and not visited[i]:
|
||||
queue.append(i)
|
||||
visited[i] = True
|
||||
print()
|
||||
|
||||
def weight(self, vertex1, vertex2):
|
||||
return self.adj_matrix[vertex1][vertex2] if self.adj_matrix[vertex1][vertex2] > 0 else -1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
matrix = [
|
||||
# 0 1 2 3 4 5
|
||||
[0, 0, 7, 0, 9, 0], # 0
|
||||
[0, 0, 0, 0, 0, 0], # 1
|
||||
[0, 5, 0, 1, 0, 2], # 2
|
||||
[6, 0, 0, 0, 0, 2], # 3
|
||||
[0, 0, 0, 0, 0, 1], # 4
|
||||
[0, 6, 0, 0, 0, 0] # 5
|
||||
]
|
||||
|
||||
graph = Graph(matrix)
|
||||
|
||||
graph.df_print(0) # 0 2 1 3 5 4
|
||||
graph.bf_print(0) # 0 2 4 1 3 5
|
||||
print(graph.weight(0, 2)) # 7
|
||||
print(graph.weight(3, 4)) # -1
|
||||
Reference in New Issue
Block a user