Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. n, m = int(input()), []
  2. for i in range(n):
  3. m.append([int(i) for i in input().split(' ')])
  4. n = len(m[0])
  5. c = 0
  6. ways = []
  7.  
  8. def f(A1, startPoint):
  9. N = len(A1[0])
  10. A = [[x for x in A1[i]] for i in range(N)]
  11. way = [startPoint]
  12. p = startPoint
  13. while min(A[p])!= 1000:
  14. p = A[p].index(min(A[p]))
  15. if len(way) != N and p not in set(way):
  16. way.append(p)
  17. else:
  18. A[way[-1]][p]= 1000
  19. p = way[-1]
  20. if m[way[-1]][startPoint] != 0:
  21. way.append(startPoint)
  22. return way
  23.  
  24. A = m
  25. N = len(A[0])
  26. for i in range(N):
  27. way = f(A,i)
  28. if len(way) == N+1 and A[way[-1]][way[0]] != 1000 :
  29. sum = 0
  30. for k in range(n):
  31. sum += A[way[k]][way[k + 1]]
  32. ways.append( (way,sum) )
  33.  
  34. if ways == []:
  35. result = []
  36. else:
  37. result = min(ways, key = lambda x: x[1])
  38.  
  39. if result:
  40. print("Path:")
  41. print(" ".join(map(lambda x: str(x), result[0])) + " ")
  42. print("Cost:", result[1])
  43. else:
  44. print("Lost")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement