21D - Traveling Graph - CodeForces Solution


bitmasks graph matchings graphs *2400

Please click on ads to support us..

Python Code:

INF = 1000 * 1000 * 100

def find_pair_combination(vertexes):
    if not vertexes:
        return 0
    ans = INF
    for i in range(1, len(vertexes)):
        ans = min(ans, dist[vertexes[0]][vertexes[i]] + find_pair_combination(vertexes[1:i] + vertexes[i + 1:]))
    return ans

def build_dijskatra(dist):
  for a in range(n):      for x in range(n):
        for y in range(n):
            dist[x][y] = min(dist[x][y], dist[x][a] + dist[a][y])
  return dist
 
n, m = map(int, input().split())
graph = [[] for _ in range(n)]
_sumEdgeWeight = 0
matr = [[INF] * n for _ in range(n)]
for i in range(m):
    a, b, w = map(int, input().split())
    _sumEdgeWeight += w
    graph[a - 1].append((b - 1, w))
    graph[b - 1].append((a - 1, w))
    matr[a - 1][b - 1] = matr[b - 1][a - 1] = min(matr[a - 1][b - 1], w)
odd = list(a for a in range(n) if len(graph[a]) % 2)
dist = build_dijskatra(matr)
result = find_pair_combination(odd)
if result < INF and max([0] + [dist[0][a] for a in range(1, n) if len(graph[a]) > 0]) < INF:      print(result + _sumEdgeWeight)
else:
    print(-1)


Comments

Submit
0 Comments
More Questions

470. Implement Rand10() Using Rand7()
866. Prime Palindrome
1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST
445. Add Two Numbers II
442. Find All Duplicates in an Array
437. Path Sum III
436. Find Right Interval
435. Non-overlapping Intervals
406. Queue Reconstruction by Height
380. Insert Delete GetRandom O(1)
332. Reconstruct Itinerary
368. Largest Divisible Subset
377. Combination Sum IV
322. Coin Change
307. Range Sum Query - Mutable
287. Find the Duplicate Number