2285 - Maximum Total Importance of Roads
C++
class Solution { public: long long maximumImportance(int n, vector<vector<int>>& roads) { vector<int> deg(n); for (auto& r : roads) { ++deg[r[0]]; ++deg[r[1]]; } sort(deg.begin(), deg.end()); long long ans = 0; for (int i = 0; i < n; ++i) ans += 1ll * (i + 1) * deg[i]; return ans; } };
JAVA
class Solution {
public long maximumImportance(int n, int[][] roads) {
int[] degree = new int[n];
int maxdegree = 0;
for (int[] r : roads) {
degree[r[0]]++;
degree[r[1]]++;
maxdegree = Math.max(maxdegree, Math.max(degree[r[0]], degree[r[1]]));
}
Map<Integer, Integer> rank = new HashMap<>();
int i = n;
while (i > 0) {
for (int j = 0; j < n; j++) {
if (degree[j] == maxdegree) {
rank.put(j, i--);
degree[j] = Integer.MIN_VALUE;
}
}
maxdegree = 0;
for (int d : degree) {
maxdegree = Math.max(maxdegree, d);
}
}
long res = 0;
for (int[] r : roads) {
res += rank.get(r[0]) + rank.get(r[1]);
}
return res;
}
}
Comments
Post a Comment