Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- n, m = int(input()), []
- for i in range(n):
- m.append([int(i) for i in input().split(' ')])
- n = len(m[0])
- c = 0
- ways = []
- def f(A1, startPoint):
- N = len(A1[0])
- A = [[x for x in A1[i]] for i in range(N)]
- way = [startPoint]
- p = startPoint
- while min(A[p])!= 1000:
- p = A[p].index(min(A[p]))
- if len(way) != N and p not in set(way):
- way.append(p)
- else:
- A[way[-1]][p]= 1000
- p = way[-1]
- if m[way[-1]][startPoint] != 0:
- way.append(startPoint)
- return way
- A = m
- N = len(A[0])
- for i in range(N):
- way = f(A,i)
- if len(way) == N+1 and A[way[-1]][way[0]] != 1000 :
- sum = 0
- for k in range(n):
- sum += A[way[k]][way[k + 1]]
- ways.append( (way,sum) )
- if ways == []:
- result = []
- else:
- result = min(ways, key = lambda x: x[1])
- if result:
- print("Path:")
- print(" ".join(map(lambda x: str(x), result[0])) + " ")
- print("Cost:", result[1])
- else:
- print("Lost")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement