Count of nodes with maximum connection in an undirected graph

Given an undirected graph with N nodes and E edges, followed by E edge connections. The task is to find the count of nodes with maximum connections
Examples:
Input: N =10, E =13,
edges[][] = { {1, 4}, {2, 3}, {4, 5}, {3, 9}, {6, 9}, {3, 8}, {10, 4},
{2, 7}, {3, 6}, {2, 8}, {9, 2}, {1, 10}, {9, 10} }
Output: 3
Explanation: The connections for each of the nodes are show below:
- 1 -> 4, 10
- 2 -> 3, 7, 8, 9
- 3 -> 2, 9, 8, 6
- 4 -> 1, 5, 10
- 5 -> 4
- 6 -> 9, 3
- 7 -> 2
- 8 -> 3, 2
- 9 -> 3, 6, 2, 10
- 10 -> 4, 9, 1
Therefore, number of nodes with maximum connections are 3 viz. {2, 3, 9}
Input: N = 8, E = 7,
edges[][] = { {0, 2}, {1, 5}, {2, 3}, {5, 7}, {2, 4}, {5, 6}, {1, 2} }
Output: 3
Approach: The task can be solved by storing the number of connected nodes for every node inside a vector. And then, find the maximum connected nodes to any of the nodes & get its count.
Below is the implementation of the above approach:
C++
// C++ program for the above approach#include <bits/stdc++.h>using namespace std;// Function to count the number of nodes// with maximum connectionsvoid get(map<int, vector<int> > graph){ // Stores the number of connections // of each node vector<int> v; // Stores the maximum connections int mx = -1; for (int i = 0; i < graph.size(); i++) { v.push_back(graph[i].size()); mx = max(mx, (int)graph[i].size()); } // Resultant count int cnt = 0; for (auto i : v) { if (i == mx) cnt++; } cout << cnt << endl;}// Drive Codeint main(){ map<int, vector<int> > graph; int nodes = 10, edges = 13; // 1 graph[1].push_back(4); graph[4].push_back(1); // 2 graph[2].push_back(3); graph[3].push_back(2); // 3 graph[4].push_back(5); graph[5].push_back(4); // 4 graph[3].push_back(9); graph[9].push_back(3); // 5 graph[6].push_back(9); graph[9].push_back(6); // 6 graph[3].push_back(8); graph[8].push_back(3); // 7 graph[10].push_back(4); graph[4].push_back(10); // 8 graph[2].push_back(7); graph[7].push_back(2); // 9 graph[3].push_back(6); graph[6].push_back(3); // 10 graph[2].push_back(8); graph[8].push_back(2); // 11 graph[9].push_back(2); graph[2].push_back(9); // 12 graph[1].push_back(10); graph[10].push_back(1); // 13 graph[9].push_back(10); graph[10].push_back(9); get(graph); return 0;} |
Java
// Java program for the above approachimport java.util.ArrayList;import java.util.HashMap;class GFG { // Function to count the number of nodes // with maximum connections static void get(HashMap<Integer, ArrayList<Integer>> graph) { // Stores the number of connections // of each node ArrayList<Integer> v = new ArrayList<Integer>(); // Stores the maximum connections int mx = -1; for (int i = 0; i < graph.size(); i++) { v.add(graph.get(i).size()); mx = Math.max(mx, (int) graph.get(i).size()); } // Resultant count int cnt = 0; for (int i : v) { if (i == mx) cnt++; } System.out.println(cnt); } // Drive Code public static void main(String args[]) { HashMap<Integer, ArrayList<Integer>> graph = new HashMap<Integer, ArrayList<Integer>>(); int nodes = 10, edges = 13; for (int i = 0; i <= nodes; i++) { graph.put(i, new ArrayList<>()); } // 1 graph.get(1).add(4); graph.get(4).add(1); // 2 graph.get(2).add(3); graph.get(3).add(2); // 3 graph.get(4).add(5); graph.get(5).add(4); // 4 graph.get(3).add(9); graph.get(9).add(3); // 5 graph.get(6).add(9); graph.get(9).add(6); // 6 graph.get(3).add(8); graph.get(8).add(3); // 7 graph.get(10).add(4); graph.get(4).add(10); // 8 graph.get(2).add(7); graph.get(7).add(2); // 9 graph.get(3).add(6); graph.get(6).add(3); // 10 graph.get(2).add(8); graph.get(8).add(2); // 11 graph.get(9).add(2); graph.get(2).add(9); // 12 graph.get(1).add(10); graph.get(10).add(1); // 13 graph.get(9).add(10); graph.get(10).add(9); get(graph); }}// This code is contributed by saurabh_jaiswal. |
Python3
# Python code for the above approach# Function to count the number of nodes# with maximum connectionsdef get(graph): # Stores the number of connections # of each node v = []; # Stores the maximum connections mx = -1; for arr in graph.values(): v.append(len(arr)); mx = max(mx, (len(arr))); # Resultant count cnt = 0; for i in v: if (i == mx): cnt += 1 print(cnt)# Drive Codegraph = {}nodes = 10edges = 13;for i in range(1, nodes + 1): graph[i] = []# 1graph[1].append(4);graph[4].append(1);# 2graph[2].append(3);graph[3].append(2);# 3graph[4].append(5);graph[5].append(4);# 4graph[3].append(9);graph[9].append(3);# 5graph[6].append(9);graph[9].append(6);# 6graph[3].append(8);graph[8].append(3);# 7graph[10].append(4);graph[4].append(10);# 8graph[2].append(7);graph[7].append(2);# 9graph[3].append(6);graph[6].append(3);# 10graph[2].append(8);graph[8].append(2);# 11graph[9].append(2);graph[2].append(9);# 12graph[1].append(10);graph[10].append(1);# 13graph[9].append(10);graph[10].append(9);get(graph);# This code is contributed by Saurabh Jaiswal |
C#
// C# program for the above approachusing System;using System.Collections.Generic;public class GFG { // Function to count the number of nodes // with maximum connections static void get(Dictionary<int, List<int>> graph) { // Stores the number of connections // of each node List<int> v = new List<int>(); // Stores the maximum connections int mx = -1; for (int i = 0; i < graph.Count; i++) { v.Add(graph[i].Count); mx = Math.Max(mx, (int) graph[i].Count); } // Resultant count int cnt = 0; foreach (int i in v) { if (i == mx) cnt++; } Console.WriteLine(cnt); } // Drive Code public static void Main(String []args) { Dictionary<int, List<int>> graph = new Dictionary<int, List<int>>(); int nodes = 10; for (int i = 0; i <= nodes; i++) { graph.Add(i, new List<int>()); } // 1 graph[1].Add(4); graph[4].Add(1); // 2 graph[2].Add(3); graph[3].Add(2); // 3 graph[4].Add(5); graph[5].Add(4); // 4 graph[3].Add(9); graph[9].Add(3); // 5 graph[6].Add(9); graph[9].Add(6); // 6 graph[3].Add(8); graph[8].Add(3); // 7 graph[10].Add(4); graph[4].Add(10); // 8 graph[2].Add(7); graph[7].Add(2); // 9 graph[3].Add(6); graph[6].Add(3); // 10 graph[2].Add(8); graph[8].Add(2); // 11 graph[9].Add(2); graph[2].Add(9); // 12 graph[1].Add(10); graph[10].Add(1); // 13 graph[9].Add(10); graph[10].Add(9); get(graph); }}// This code is contributed by shikhasingrajput |
Javascript
<script> // JavaScript code for the above approach // Function to count the number of nodes // with maximum connections function get(graph) { // Stores the number of connections // of each node let v = []; // Stores the maximum connections let mx = -1; for (let [key, arr] of graph) { v.push(arr.length); mx = Math.max(mx, (arr.length)); } // Resultant count let cnt = 0; for (let i of v) { if (i == mx) cnt++; } document.write(cnt + "<br>") } // Drive Code let graph = new Map(); let nodes = 10, edges = 13; for (let i = 1; i <= nodes; i++) { graph.set(i, []); } // 1 graph.get(1).push(4); graph.get(4).push(1); // 2 graph.get(2).push(3); graph.get(3).push(2); // 3 graph.get(4).push(5); graph.get(5).push(4); // 4 graph.get(3).push(9); graph.get(9).push(3); // 5 graph.get(6).push(9); graph.get(9).push(6); // 6 graph.get(3).push(8); graph.get(8).push(3); // 7 graph.get(10).push(4); graph.get(4).push(10); // 8 graph.get(2).push(7); graph.get(7).push(2); // 9 graph.get(3).push(6); graph.get(6).push(3); // 10 graph.get(2).push(8); graph.get(8).push(2); // 11 graph.get(9).push(2); graph.get(2).push(9); // 12 graph.get(1).push(10); graph.get(10).push(1); // 13 graph.get(9).push(10); graph.get(10).push(9); get(graph); // This code is contributed by Potta Lokesh </script> |
3
Time Complexity: O(N)
Auxiliary Space: O(N)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



