ПОМОГИТЕ!!!!!!!!
В ситуации эпидемии важна социальная дистанция. В музей одновременно прибыли несколько групп. Постройте график посещения залов музея для каждой группы так, чтобы ни одного не было пропущено, и при этом на одной точке одновременно не находилось больше одной группы. Считайте, что группы начинают осмотр одновременно, находясь в зале 1 минуту, время перемещения в минутах задано значениями длин рёбер. Допускается повторное посещение зала.
Карта музея одинаковая для всех тестов и представлена в виде графа, заданного числом вершин (от 1 до N) и набором рёбер (указывается также длина ребра — время пути между залами музея в минутах).
Для удобства мы приводим схематическую иллюстрацию карты и её текстовое представление. В тексте ниже первая строка — число вершин и рёбер; далее следуют номера соединяемых вершин и длина каждого ребра.
15 21
1 2 10
1 15 14
1 6 16
2 3 6
3 6 9
3 4 6
4 5 7
4 7 10
5 6 11
5 7 13
7 8 3
7 10 10
8 9 12
9 10 5
10 11 7
11 12 7
11 13 11
11 14 21
12 15 16
13 14 20
13 15 14
На вход программа получит набор чисел — номера залов — точка начала осмотра для каждой группы (целые числа от 1 до 15, разделённые пробелом). В ответ нужно вывести последовательность залов для каждой группы в отдельной строке (сохраняя порядок групп). Программа визита ограничена 200 минутами.
Sample Input:
1
Sample Output:
1 2 3 6 5 4 7 8 9 10 11 14 13 15 12
ДАЮ 50 Балов!!!!!
СРООООЧНООО!!!!!!
Answers & Comments
kolver, kolrebra = 15, 21
rebra = [[1, 2, 10], [1, 15, 14], [1, 6, 16], [2, 3, 6], [3, 6, 9], [3, 4, 6], [4, 5, 7], [4, 7, 10], [5, 6, 11], [5, 7, 13], [7, 8, 3], [7, 10, 10], [8, 9, 12], [9, 10, 5], [10, 11, 7], [11, 12, 7], [11, 13, 11], [11, 14, 21], [12, 15, 16], [13, 14, 20], [13, 15, 14]]
print(rebra)
d = {str(a): [] for a in range(kolver+1)}
for item in rebra:
d[str(item[0])].append(str(item[1]))
for item in rebra:
d[str(item[1])].append(str(item[0]))
print(d)
graph = {'0': [], '1': ['2', '15', '6'], '2': ['3', '1'], '3': ['6', '4', '2'], '4': ['5', '7', '3'], '5': ['6', '7', '4'], '6': ['1', '3', '5'], '7': ['8', '10', '4', '5'], '8': ['9', '7'], '9': ['10', '8'], '10': ['11', '7', '9'], '11': ['12', '13', '14', '10'], '12': ['15', '11'], '13': ['14', '15', '11'], '14': ['11', '13'], '15': ['1', '12', '13']}
# visited is a set that is used to keep track of visited nodes.
visited = set()
listrezalt=[]
def dfs(visited, graph, node):
if node not in visited:
listrezalt.append(node)
visited.add(node)
#print("->",node)
minvert=100
vert = None
for neighbor in graph[node]:
#print(len(graph[neighbor]))
if len(graph[neighbor]) !=None and (len(graph[neighbor]))<minvert and (neighbor not in visited):
minvert = len(graph[neighbor])
vert = neighbor
if vert!=None:
dfs(visited, graph, vert)
dfs(visited, graph, "10")
print(listrezalt)