#include <ranges>
class Solution {
public:
long long maximumImportance(int n, vector<vector<int>>& roads) {
unordered_map<int, int> freq;
for(vector<int> road : roads) {
freq[road[0]]++;
freq[road[1]]++;
}
map<int, vector<int>> freqs;
for(auto [key, value] : freq) {
freqs[value].push_back(key);
}
unordered_map<int, int> node_values;
int weight = n;
for(auto const& [key, value] : freqs | std::views::reverse) {
for(int node : value) {
node_values[node] = weight;
weight--;
}
}
long long resp = 0;
for(vector<int> road : roads) {
resp += node_values[road[0]] + node_values[road[1]];
}
return(resp);
}
};