Требуется перевести с языка Python на C++
Алгоритм 1:
def dijkstra(graph, start):
"""
Args:
graph: Граф, представленный в виде списка смежности.
start: Начальная вершина.
"""
# Создаем словарь расстояний до вершин.
distances = {}
for vertex in graph:
distances[vertex] = float("inf")
distances[start] = 0
# Создаем множество посещенных вершин.
visited = set()
# Создаем очередь приоритетов для вершин, которые еще не посещены.
pq = [(0, start)]
while pq:
(distance, vertex) = heapq.heappop(pq)
if vertex in visited:
continue
for to in graph[vertex]:
if distances[to] > distances[vertex] + 1:
distances[to] = distances[vertex] + 1
heapq.heappush(pq, (distances[to], to))
# Отмечаем вершину как посещенную.
visited.add(vertex)
return distances
Алгоритм 2:
def count_connected_components(graph):
num_vertices = len(graph)
visited = [False] * num_vertices
num_components = 0
for vertex in range(num_vertices):
if not visited[vertex]:
num_components += 1
dfs(graph, vertex, visited)
return num_components
Источник: Stack Overflow на русском