#https://i...content-available-to-author-only...e.com/54GWZA #pocitame najmensie vzdialenosti z jedneho vrchola do vsetkych # #n, m - pocet vrcholov a hran; vrcholy pismena od 'A' #v1 v2 vzd - 2 vrcholy a vzdialenost medzi nimi pre kazdu hranu #v - pociatocny vrchol import queue n, m = [int(_) for _ in input().split()] susedia = {} vzdialenosti = {} for x in range(n): susedia[chr(ord('A')+x)] = [] # x-te pismeno v poradi vzdialenosti[chr(ord('A')+x)] = float('inf') #nekonecno print(susedia) print(vzdialenosti) for i in range(m): v1,v2,vzd = [_ for _ in input().split()] vzd = int(vzd) susedia[v1].append( (vzd, v2) ) susedia[v2].append( (vzd, v1) ) v = input() print(n, m) print(v) for s in susedia: print(s, susedia[s]) #pocitanie najkratsej cesty mesta = queue.PriorityQueue() #prioritny rad pre mesta a ich vzdialenosti od pociatku mesta.put( (0, v) ) #do vrcholu v sa vieme dostat cestou dlzky 0 while not mesta.empty(): vzd, m = mesta.get() # if vzd < vzdialenosti[m]: #nasli sme kratsiu cestu vzdialenosti[m] = vzd #zapiseme ju for h in susedia[m]: #hrany k susedom c, v = h #c = vzdialenost z m do v mesta.put( (c+vzd, v) ) print(vzdialenosti)
7 11 A B 7 A D 5 B C 8 B D 9 B E 7 C E 5 D E 15 D F 6 E F 8 E G 9 F G 11 D
{'A': [], 'G': [], 'B': [], 'D': [], 'F': [], 'E': [], 'C': []} {'A': inf, 'G': inf, 'B': inf, 'D': inf, 'F': inf, 'E': inf, 'C': inf} 7 11 D A [(7, 'B'), (5, 'D')] G [(9, 'E'), (11, 'F')] B [(7, 'A'), (8, 'C'), (9, 'D'), (7, 'E')] D [(5, 'A'), (9, 'B'), (15, 'E'), (6, 'F')] F [(6, 'D'), (8, 'E'), (11, 'G')] E [(7, 'B'), (5, 'C'), (15, 'D'), (8, 'F'), (9, 'G')] C [(8, 'B'), (5, 'E')] {'A': 5, 'G': 17, 'B': 9, 'D': 0, 'F': 6, 'E': 14, 'C': 17}