-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmaximum_total_importance.py
59 lines (52 loc) · 2.65 KB
/
maximum_total_importance.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# https://leetcode.com/problems/maximum-total-importance-of-roads/description/
# 2285. Maximum Total Importance of Roads
# You are given an integer n denoting the number of cities in a country. The cities are numbered from 0 to n - 1.
# You are also given a 2D integer array roads where roads[i] = [ai, bi] denotes that there exists a bidirectional road connecting cities ai and bi.
# You need to assign each city with an integer value from 1 to n, where each value can only be used once. The importance of a road is then defined as the sum of the values of the two cities it connects.
# Return the maximum total importance of all roads possible after assigning the values optimally.
# Example 1:
# Input: n = 5, roads = [[0,1],[1,2],[2,3],[0,2],[1,3],[2,4]]
# Output: 43
# Explanation: The figure above shows the country and the assigned values of [2,4,5,3,1].
# - The road (0,1) has an importance of 2 + 4 = 6.
# - The road (1,2) has an importance of 4 + 5 = 9.
# - The road (2,3) has an importance of 5 + 3 = 8.
# - The road (0,2) has an importance of 2 + 5 = 7.
# - The road (1,3) has an importance of 4 + 3 = 7.
# - The road (2,4) has an importance of 5 + 1 = 6.
# The total importance of all roads is 6 + 9 + 8 + 7 + 7 + 6 = 43.
# It can be shown that we cannot obtain a greater total importance than 43.
# Example 2:
# Input: n = 5, roads = [[0,3],[2,4],[1,3]]
# Output: 20
# Explanation: The figure above shows the country and the assigned values of [4,3,2,5,1].
# - The road (0,3) has an importance of 4 + 5 = 9.
# - The road (2,4) has an importance of 2 + 1 = 3.
# - The road (1,3) has an importance of 3 + 5 = 8.
# The total importance of all roads is 9 + 3 + 8 = 20.
# It can be shown that we cannot obtain a greater total importance than 20.
# Constraints:
# 2 <= n <= 5 * 104
# 1 <= roads.length <= 5 * 104
# roads[i].length == 2
# 0 <= ai, bi <= n - 1
# ai != bi
# There are no duplicate roads.
from typing import List
class Solution:
def maximumImportance(self, n: int, roads: List[List[int]]) -> int:
''' Maximum Total Importance of Roads '''
deg = [0] * n
for a, b in roads:
deg[a] += 1
deg[b] += 1
deg.sort()
# print("Sorted list of road mentions:",deg)
# Return the MAXIMUM total importance of all roads possible after assigning the values optimally:
# assign each city with an integer value from 1 to n
# - for the most frequently mentioned road, assign the highest value
return sum(i * v for i, v in enumerate(deg, 1))
print(Solution().maximumImportance(5,[[0,1],[1,2],[2,3],[0,2],[1,3],[2,4]]))
# Output: 43
print(Solution().maximumImportance(5,[[0,3],[2,4],[1,3]]))
# Output: 20