Загрузка данных


# Задача 1. Исследуем связи в словаре Python
graph = {
    "A": ["B", "C"],
    "B": ["D"],
    "C": ["D"],
    "D": []
}

out_degree_b = len(graph["B"])
print("Исходящая степень B:", out_degree_b)

in_degree_c = sum(1 for neighbors in graph.values() if "C" in neighbors)
print("Входящая степень С:", in_degree_c)


# Задача 2. Полный расчет степеней вершины
social = {
    "Аня": ["Борис", "Василий"],
    "Борис": ["Василий"],
    "Василий": ["Аня", "Борис"],
    "Глеб": ["Аня", "Борис"]
}

target = "Аня"
in_deg = sum(1 for target_list in social.values() if target in target_list)
out_deg = len(social[target])

print(f"Исходящая степень (подписки): {out_deg}")
print(f"Входящая степень (подписчики): {in_deg}")


# Задача 3. Проверка существования маршрута
roads = {
    "Пункт1": ["Пункт2", "Пункт3"],
    "Пункт2": ["Пункт4"],
    "Пункт3": ["Пункт4"],
    "Пункт4": ["Пункт5"],
    "Пункт5": []
}

route_path = ["Пункт1", "Пункт3", "Пункт4", "Пункт5"]
is_valid = True

for i in range(len(route_path) - 1):
    current = route_path[i]
    next_node = route_path[i+1]
    
    if next_node not in roads.get(current, []):
        print(f"Ошибка: нельзя перейти из {current} в {next_node}")
        is_valid = False
        break

if is_valid:
    print("Маршрут полностью корректен!")


# Задача 4. Поиск самой «популярной» вершины
web_links = {
    "Page1": ["Page2", "Page3", "Page4"],
    "Page2": ["Page4"],
    "Page3": ["Page4"],
    "Page4": ["Page2"]
}

max_in_degree = -1
popular_vertex = None

for vertex in web_links.keys():
    in_deg = sum(1 for links in web_links.values() if vertex in links)
    
    if in_deg > max_in_degree:
        max_in_degree = in_deg
        popular_vertex = vertex

print(f"Самая популярная вершина: {popular_vertex} (входящая степень: {max_in_degree})")