Vanilla_Fury

icpc_2021_f

Oct 24th, 2021 (edited)
278
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.79 KB | None | 0 0
  1. # F
  2. def main():
  3.     arr_of_pairs = []
  4.     quantity_of_cities = int(input())
  5.  
  6.     arr_weights = [[int(num) for num in input().split()[:i]] for i in range(quantity_of_cities)]
  7.  
  8.     i_of_max, j_of_max = -1, -1
  9.     arr_of_friends = [[] for i in range(quantity_of_cities)]
  10.     for k in range(quantity_of_cities - 1):
  11.         max_temp = -1
  12.         for j in range(quantity_of_cities):
  13.             for i in range(quantity_of_cities - 1, j, -1):
  14.                 if max_temp < arr_weights[i][j] and arr_of_friends[j].count(i) == 0:
  15.                     max_temp = arr_weights[i][j]
  16.                     i_of_max, j_of_max = i, j
  17.  
  18.         arr_weights[i_of_max][j_of_max] = -1
  19.         if arr_weights[i_of_max].count(-1) > 1:
  20.             arr_weights[i_of_max] = [-1 for j in range(i_of_max)]
  21.         if [arr_weights[i][j_of_max] for i in range(quantity_of_cities - 1, j_of_max, -1)].count(-1) > 1:
  22.             for i in range(quantity_of_cities - 1, j_of_max, -1):
  23.                 arr_weights[i][j_of_max] = -1
  24.  
  25.         for el in arr_of_friends[i_of_max]:
  26.             if arr_of_friends[j_of_max].count(el) < 1:
  27.                 arr_of_friends[j_of_max].append(el)
  28.         for el in arr_of_friends[j_of_max]:
  29.             if arr_of_friends[i_of_max].count(el) < 1:
  30.                 arr_of_friends[i_of_max].append(el)
  31.         if arr_of_friends[i_of_max].count(j_of_max) < 1:
  32.             arr_of_friends[i_of_max].append(j_of_max)
  33.         if arr_of_friends[j_of_max].count(i_of_max) < 1:
  34.             arr_of_friends[j_of_max].append(i_of_max)
  35.         for friend in arr_of_friends[j_of_max]:
  36.             for el in arr_of_friends[j_of_max]:
  37.                 if arr_of_friends[friend].count(el) < 1:
  38.                     arr_of_friends[friend].append(el)
  39.  
  40.         arr_of_pairs.append([i_of_max + 1, j_of_max + 1])
  41.  
  42.     arr_way = [arr_of_pairs[0][0], arr_of_pairs[0][1]]
  43.     for k in range(quantity_of_cities):
  44.         for i in range(1, len(arr_of_pairs)):
  45.             if arr_of_pairs[i][0] == arr_way[-1]:
  46.                 arr_way.append(arr_of_pairs[i][1])
  47.                 arr_of_pairs[i] = [-1, -1]
  48.             elif arr_of_pairs[i][1] == arr_way[-1]:
  49.                 arr_way.append(arr_of_pairs[i][0])
  50.                 arr_of_pairs[i] = [-1, -1]
  51.             elif arr_of_pairs[i][1] == arr_way[0]:
  52.                 arr_way.insert(0, arr_of_pairs[i][0])
  53.                 arr_of_pairs[i] = [-1, -1]
  54.             elif arr_of_pairs[i][0] == arr_way[0]:
  55.                 arr_way.insert(0, arr_of_pairs[i][1])
  56.                 arr_of_pairs[i] = [-1, -1]
  57.  
  58.     str_out = ""
  59.     for el in arr_way:
  60.         str_out += str(el) + " "
  61.     print(str_out[str_out.index("1"):] + str_out[:str_out.index("1")])
  62.  
  63.  
  64. if __name__ == '__main__':
  65.     main()
  66.  
  67. """
  68. 5
  69. 1 5 2 4
  70. 1 3 10 7
  71. 5 3 6 9
  72. 2 10 6 8
  73. 4 7 9 8
  74.  
  75. 4
  76. 3 5 6
  77. 3 1 2
  78. 5 1 7
  79. 6 2 7
  80. """
Add Comment
Please, Sign In to add comment