难点:统计某两个点的临边数,相邻两点之间的边只算一次
class Solution {
public:
int maximalNetworkRank(int n, vector<vector<int>>& roads) {
int res = 0;
int cnt[n] ;
int g[n][n];
memset(g,0,sizeof g);
memset(cnt,0,sizeof cnt);
for(auto t:roads){
cnt[t[0]]++,cnt[t[1]]++;
g[t[0]][t[1]] = g[t[1]][t[0]] = 1;
}
for(int i = 0 ; i < n ; i ++){
for(int j = i + 1 ;j < n; j ++ ){
res = max(res,cnt[i] + cnt[j] - g[i][j]);
}
}
return res;
}
};