-
Notifications
You must be signed in to change notification settings - Fork 86
Expand file tree
/
Copy pathmaximal_network_rank.cpp
More file actions
53 lines (43 loc) · 1.28 KB
/
maximal_network_rank.cpp
File metadata and controls
53 lines (43 loc) · 1.28 KB
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
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Solution {
public:
int maximalNetworkRank(int numCities, vector<vector<int>>& roads) {
vector<int> degree(numCities, 0);
vector<vector<int>> adjacency(numCities);
int maxRank = 0;
for (int i = 0; i < roads.size(); i++) {
int cityA = roads[i][0];
int cityB = roads[i][1];
adjacency[cityA].push_back(cityB);
adjacency[cityB].push_back(cityA);
degree[cityA]++;
degree[cityB]++;
}
for (int cityA = 0; cityA < numCities; cityA++) {
for (int cityB = cityA + 1; cityB < numCities; cityB++) {
int rank = degree[cityA] + degree[cityB];
if (count(adjacency[cityA].begin(), adjacency[cityA].end(), cityB)) {
rank--;
}
maxRank = max(maxRank, rank);
}
}
return maxRank;
}
};
int main() {
Solution solution;
int numCities = 4;
vector<vector<int>> roads = {
{0, 1},
{0, 3},
{1, 2},
{1, 3}
};
int result = solution.maximalNetworkRank(numCities, roads);
cout << "Maximal Network Rank: " << result << endl;
return 0;
}