689B - Mike and Shortcuts - CodeForces Solution


dfs and similar graphs greedy shortest paths *1600

Please click on ads to support us..

Python Code:

n = int(input())
array = list(map(int, input().split()))
array = [(q - 1) for q in array]

dist = [0] + ([-1] * (n - 1))
 
i = 0
fila = [0]
while i < len(fila):
    k = fila[i]
    q = array[k]
 
    if dist[q] == -1:
        dist[q] = dist[k] + 1
        fila.append(q)
    if k < (n - 1) and dist[k + 1] == -1:
            dist[k + 1] = dist[k] + 1
            fila.append(k + 1)  
    if k > 0 and dist[k - 1] == -1:
            dist[k - 1] = dist[k] + 1
            fila.append(k - 1)
    i += 1
 
print(' '.join(str(e) for e in dist))


Comments

Submit
0 Comments
More Questions

1244E - Minimizing Difference
1688A - Cirno's Perfect Bitmasks Classroom
219A - k-String
952A - Quirky Quantifiers
451B - Sort the Array
1505H - L BREAK into program
171E - MYSTERIOUS LANGUAGE
630D - Hexagons
1690D - Black and White Stripe
1688D - The Enchanted Forest
1674C - Infinite Replacement
712A - Memory and Crow
1676C - Most Similar Words
1681A - Game with Cards
151C - Win or Freeze
1585A - Life of a Flower
1662A - Organizing SWERC
466C - Number of Ways
1146A - Love "A"
1618D - Array and Operations
1255A - Changing Volume
1710C - XOR Triangle
415C - Mashmokh and Numbers
8A - Train and Peter
591A - Wizards' Duel
1703G - Good Key Bad Key
1705A - Mark the Photographer
1707A - Doremy's IQ
1706B - Making Towers
1325B - CopyCopyCopyCopyCopy