{"id":1880,"date":"2020-07-01T09:46:15","date_gmt":"2020-07-01T09:46:15","guid":{"rendered":"https:\/\/blog.prepbytes.com\/?p=1880"},"modified":"2022-03-23T23:28:36","modified_gmt":"2022-03-23T23:28:36","slug":"maximum-edges","status":"publish","type":"post","link":"https:\/\/prepbytes.com\/blog\/maximum-edges\/","title":{"rendered":"Maximum Edges"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527975034-Article_394.png\" alt=\"\" \/><\/p>\n<h3>Concepts Used<\/h3>\n<blockquote>\n<p>Depth First Search, Disjoint Set<\/p>\n<\/blockquote>\n<h3>Difficulty Level<\/h3>\n<blockquote>\n<p>Medium<\/p>\n<\/blockquote>\n<h3>Problem Statement :<\/h3>\n<blockquote>\n<p>Given <code>N<\/code> number of vertices, <code>M<\/code> number of edges and relation between them to form an undirected graph, our task is to find the maximum number of edges among all the connected components in the given graph. <\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/mycode.prepbytes.com\/problems\/graphs\/MAXED\" title=\"Go to mycode.prepbytes.com\" target=\"_blank\" rel=\"noopener noreferrer\"><u><strong><\/strong><\/u><\/a><\/p>\n<h3>Solution Approach :<\/h3>\n<h4>Introduction :<\/h4>\n<blockquote>\n<p>Idea is to traverse the graph and count the edges for every connected component (refer to the connected components article) and print the maximum edge count.<\/p>\n<p>This can be done using <strong>dfs<\/strong> or <strong>Disjoint Set<\/strong>.<\/p>\n<\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes.com\/blog\/wp-content\/uploads\/2020\/06\/MAXED.png\" alt=\"\" \/><\/p>\n<h4>Method 1 (Using DFS) :<\/h4>\n<blockquote>\n<p>We will traverse for every vertex <code>v<\/code> using <strong>dfs()<\/strong>, keep track whether it is visited or not using <code>visited[]<\/code> array of boolean type. If <code>v<\/code> is un-visited we will mark it visited (<code>visited[v]=true<\/code>), then traverse for all the adjacent vertices of <code>v<\/code>, for each adjacent vertex <code>a<\/code>, we will increment edge count by <code>1<\/code> and if <code>a<\/code> is un-visited, recursive call <strong>dfs(<code>a<\/code>)<\/strong>. <\/p>\n<p>Now after the first <strong>dfs()<\/strong> call a single connected component has been visited and it will return number of edges of this component, this process will be repeated for all vertices and every time it will return the number of edges of some component. One important thing to notice is that it will return twice the actual edge count (why? refer to <strong>Handshaking Lemma<\/strong>), so we need to divide edge count by <code>2<\/code> to get the actual number of edges. We will store the maximum of all the edge count and print it.<\/p>\n<\/blockquote>\n<h4>Method 2 (Using Disjoint Set):<\/h4>\n<p>Although main idea behind the solution approach remains un-changed. We are going to use <strong>Disjoint Set Union<\/strong> or <strong>DSU<\/strong> data structure as an alternate way to solve our problem. <strong>DSU<\/strong>  data structure is also sometimes called <strong>Union-Find Set<\/strong>. This data structure is used to keep track of the different disjoint sets.<br \/>\nIt basically performs two operations :<\/p>\n<blockquote>\n<ol>\n<li><strong>Union :<\/strong> It takes two vertices and join them in a single set (if it is not already there).<\/li>\n<li><strong>Find :<\/strong> Determines in which subset the element is.<br \/>\nWe are using an additional array <code>size[]<\/code> to keep the size of the edges for each root of our set. <code>ith<\/code> index of <code>size[]<\/code> will give us the number of edges in the tree rooted with <code>i<\/code>.<br \/>\nWe will perform <strong>union<\/strong> for every edge. After processing all the edges iterate through <code>size[]<\/code> and print the maximum value i.e maximum edge count. <\/li>\n<\/ol>\n<\/blockquote>\n<h3>Algorithms :<\/h3>\n<blockquote>\n<p><strong>dfs()<\/strong> :<\/p>\n<ol>\n<li>for every vertex <code>v<\/code>, we will mark the vertex <code>v<\/code> as visited (<code>visited[v]= true<\/code>).<\/li>\n<li>Iterate for all the adjacent vertices of <code>v<\/code> and for every adjacent vertex <code>a<\/code>, do following :\n<ul>\n<li>increment the edge_count by <code>1<\/code>.<\/li>\n<li>if <code>a<\/code> is not visited i.e <code>visited[a]= false<\/code>, <\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/blockquote>\n<p>recursively call <strong>dfs(<code>a<\/code>)<\/strong>.<\/p>\n<blockquote>\n<ul>\n<li>return edge_count.<\/li>\n<\/ul>\n<\/blockquote>\n<p><strong>union()<\/strong> :<\/p>\n<blockquote>\n<ol>\n<li>For two vertices <code>u<\/code> &amp; <code>v<\/code>, find the root for both vertices using <strong>find()<\/strong> (<code>a=find(u)<\/code> &amp; <code>b = find(v)<\/code>).<\/li>\n<li>If the root of <code>u<\/code> &amp; <code>v<\/code> are not similar, check the level of <code>a<\/code> &amp; <code>b<\/code> as follows:\n<ul>\n<li>if (<code>level[a]&gt;* else if (<\/code>level[a]&gt;level[b]<code>), update <\/code>parent[b] = a<code> &amp; <\/code>size[a]+=size[b]+1`.<\/li>\n<li>else , update <code>parent[b]=a<\/code>, update <code>level[a] = level[a]+1<\/code> &amp; <code>size[a]+=1<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/blockquote>\n<p><strong>find()<\/strong> : <\/p>\n<blockquote>\n<ol>\n<li>If <code>(parent[v]==v)<\/code>, returns the vertex <code>v<\/code> (which is root).<\/li>\n<li>Else, update <code>parent[v]<\/code> by recursively looking up the tree for the root. <code>(find(parent[v]))<\/code>.<\/li>\n<\/ol>\n<\/blockquote>\n<h3>Complexity Analysis:<\/h3>\n<blockquote>\n<p>The <strong>time complexity<\/strong> of the first method is represented in the form of <code>O(V+E)<\/code>, where <code>V<\/code> is the number of verices and <code>E<\/code> is the number of edges.<\/p>\n<p>The <strong>space complexity<\/strong> of the algorithm is <code>O(V)<\/code> for <code>visited[]<\/code> &amp; <code>colour[]<\/code> array.<\/p>\n<\/blockquote>\n<h3>Solutions:<\/h3>\n<p>\t\t\t\t\t\t<style>\r\n\t\t\t\t\r\n\t\t\t\t\t#tab_container_1902 {\r\n\toverflow:hidden;\r\n\tdisplay:block;\r\n\twidth:100%;\r\n\tborder:0px solid #ddd;\r\n\tmargin-bottom:30px;\r\n\t}\r\n\r\n#tab_container_1902 .tab-content{\r\n\tpadding:20px;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n\tmargin-top: 0px;\r\n\tbackground-color:#ffffff !important;\r\n\tcolor: #000000 !important;\r\n\tfont-size:16px !important;\r\n\tfont-family: Open Sans !important;\r\n\t\r\n\t\tborder: 1px solid #e6e6e6 !important;\r\n\t}\r\n#tab_container_1902 .wpsm_nav-tabs {\r\n    border-bottom: 0px solid #ddd;\r\n}\r\n#tab_container_1902 .wpsm_nav-tabs > li.active > a, #tab_container_1902 .wpsm_nav-tabs > li.active > a:hover, #tab_container_1902 .wpsm_nav-tabs > li.active > a:focus {\r\n\tcolor: #000000 !important;\r\n\tcursor: default;\r\n\tbackground-color: #ffffff !important;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n}\r\n\r\n#tab_container_1902 .wpsm_nav-tabs > li > a {\r\n    margin-right: 0px !important; \r\n    line-height: 1.42857143 !important;\r\n    border: 1px solid #d5d5d5 !important;\r\n    border-radius: 0px 0px 0 0 !important; \r\n\tbackground-color: #e8e8e8 !important;\r\n\tcolor: #000000 !important;\r\n\tpadding: 15px 18px 15px 18px !important;\r\n\ttext-decoration: none !important;\r\n\tfont-size: 14px !important;\r\n\ttext-align:center !important;\r\n\tfont-family: Open Sans !important;\r\n}\r\n#tab_container_1902 .wpsm_nav-tabs > li > a:focus {\r\noutline: 0px !important;\r\n}\r\n\r\n#tab_container_1902 .wpsm_nav-tabs > li > a:before {\r\n\tdisplay:none !important;\r\n}\r\n#tab_container_1902 .wpsm_nav-tabs > li > a:after {\r\n\tdisplay:none !important ;\r\n}\r\n#tab_container_1902 .wpsm_nav-tabs > li{\r\npadding:0px !important ;\r\nmargin:0px;\r\n}\r\n\r\n#tab_container_1902 .wpsm_nav-tabs > li > a:hover , #tab_container_1902 .wpsm_nav-tabs > li > a:focus {\r\n    color: #000000 !important;\r\n    background-color: #e8e8e8 !important;\r\n\tborder: 1px solid #d5d5d5 !important;\r\n\t\r\n}\r\n#tab_container_1902 .wpsm_nav-tabs > li > a .fa{\r\n\r\nmargin-right:5px !important;\r\n\r\nmargin-left:5px !important;\r\n\r\n\r\n}\r\n\r\n\t\t#tab_container_1902 .wpsm_nav-tabs a{\r\n\t\t\tbackground-image: none;\r\n\t\t\tbackground-position: 0 0;\r\n\t\t\tbackground-repeat: repeat-x;\r\n\t\t}\r\n\t\t\t\r\n\r\n\r\n#tab_container_1902 .wpsm_nav-tabs > li {\r\n    float: left;\r\n    margin-bottom: -1px !important;\r\n\tmargin-right:0px !important; \r\n}\r\n\r\n\r\n#tab_container_1902 .tab-content{\r\noverflow:hidden !important;\r\n}\r\n\r\n\r\n@media (min-width: 769px) {\r\n\r\n\t#tab_container_1902 .wpsm_nav-tabs > li{\r\n\t\tfloat:left !important ;\r\n\t\t\t\tmargin-right:-1px !important;\r\n\t\t\t\t\t}\r\n\t#tab_container_1902 .wpsm_nav-tabs{\r\n\t\tfloat:none !important;\r\n\t\tmargin:0px !important;\r\n\t}\r\n\r\n\t#tab_container_1902 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_1902 .wpsm_nav{\r\n\t\t\t}\r\n\r\n}\r\n\r\n\r\n\r\n@media (max-width: 768px) {\r\n\t#tab_container_1902 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_1902 .wpsm_nav{\r\n\t\t\t}\r\n}\r\n\r\n\r\n\t.wpsm_nav-tabs li:before{\r\n\t\tdisplay:none !important;\r\n\t}\r\n\r\n\t@media (max-width: 768px) {\r\n\t\t\t\t\r\n\t\t\t\t.wpsm_nav-tabs{\r\n\t\t\tmargin-left:0px !important;\r\n\t\t\tmargin-right:0px !important; \r\n\t\t\t\r\n\t\t}\r\n\t\t\t\t#tab_container_1902 .wpsm_nav-tabs > li{\r\n\t\t\tfloat:none !important;\r\n\t\t}\r\n\t\t\t\r\n\t}\t\t\t\t<\/style>\r\n\t\t\t\t<div id=\"tab_container_1902\" >\r\n\t \r\n\t\t\t\t\t<ul class=\"wpsm_nav wpsm_nav-tabs\" role=\"tablist\" id=\"myTab_1902\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  class=\"active\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_1902_1\" aria-controls=\"tabs_desc_1902_1\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>C<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_1902_2\" aria-controls=\"tabs_desc_1902_2\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>C++<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_1902_3\" aria-controls=\"tabs_desc_1902_3\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Java<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t\t\t <\/ul>\r\n\r\n\t\t\t\t\t  <!-- Tab panes -->\r\n\t\t\t\t\t  <div class=\"tab-content\" id=\"tab-content_1902\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane  in active \" id=\"tabs_desc_1902_1\">\r\n\t\t\t\t\t\t\t\t\r\n\r\n<!-- wp:enlighter\/codeblock {\"language\":\"c\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n\r\n#include&lt;stdio.h&gt;\r\n    long rank[100001]={0},parent[100001]={0},size[100001]={0};\r\n\r\n    long rp(long num)\r\n        {\r\n        if(parent[num]!=num)\r\n        return (parent[num]=rp(parent[num]));\r\n        else return num;\r\n        }\r\n\r\n    void uni(long a,long b)\r\n    {\r\n        long parenta,parentb;\r\n        parenta=rp(a);\r\n        parentb=rp(b);\r\n        if(parenta==parentb)\r\n        {\r\n        size[parenta]++;\r\n        return;\r\n\r\n        }\r\n        if(rank[parenta]==rank[parentb])\r\n        {\r\n        parent[parentb]=parenta;\r\n        size[parenta]+=size[parentb]+1;\r\n        rank[parenta]++;\r\n\r\n        }\r\n        else if(rank[parentb]&gt;rank[parenta])\r\n        {\r\n        parent[parenta]=parentb;\r\n        size[parentb]+=size[parenta]+1;\r\n\r\n        }\r\n        else if(rank[parenta]&gt;rank[parentb])\r\n        {\r\n        parent[parentb]=parenta;\r\n        size[parenta]+=size[parentb]+1;\r\n\r\n        }\r\n    }\r\n\r\n        int main()\r\n        {\r\n        int t;\r\n        scanf(\"%d\",&amp;t);\r\n        while(t--)\r\n        {\r\n        long i,n,m,a,b,max=-1,j;\r\n        for(i=0;i&lt;=100000;i++)\r\n        { \r\n        parent[i]=i;\r\n        rank[i]=0;\r\n        size[i]=0;\r\n        }\r\n        scanf(\"%ld%ld\",&amp;n,&amp;m);\r\n        for(i=0;i&lt;m;i++)\r\n        {\r\n        scanf(\"%ld%ld\",&amp;a,&amp;b);\r\n        uni(a,b);\r\n\r\n        }\r\n        for(i=0;i&lt;n;i++)\r\n        if(size[i]&gt;max)\r\n        {\r\n            max=size[i];\r\n            j=i;\r\n        }\r\n        printf(\"%ld&#92;n\",max);\r\n        }\r\n        return 0;}\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\r\n\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_1902_2\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"cpp\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n\r\n#include&lt;bits\/stdc++.h&gt;\r\n    using namespace std;\r\n    vector&lt;int&gt;v[100005];\r\n    bool vis[100005];\r\n    int siz,edges;\r\n\r\n    int dfs(int i)\r\n    {\r\n        vis[i]=true;\r\n        \/\/siz++;\r\n        for(int u:v[i])\r\n        {       \r\n            edges++;\r\n            if(!vis[u])\r\n                dfs(u);\r\n        }\r\n        return edges;\r\n    }\r\n\r\n    int main()\r\n    {\r\n      int t;\r\n      cin&gt;&gt;t;\r\n      while(t--)\r\n      {\r\n        int n,m;\r\n        cin&gt;&gt;n&gt;&gt;m;\r\n\r\n      for(int i=0;i&lt;n;i++)\r\n        {\r\n          v[i].clear();\r\n          vis[i] = false;\r\n        }\r\n\r\n      for(int i=0;i&lt;m;i++)\r\n        {\r\n            int a,b;\r\n            cin&gt;&gt;a&gt;&gt;b;\r\n            v[a].push_back(b);\r\n            v[b].push_back(a);\r\n        }\r\n\r\n          siz=0,edges = 0;\r\n          int maxedges=0;\r\n        for(int i=0;i&lt;n;i++)\r\n        {\r\n            if(!vis[i])\r\n            {\r\n                \/\/dfs(i);\r\n                \/\/cout&lt;&lt;edges\/2&lt;&lt;\"&#92;n\";\r\n                maxedges=max(maxedges,dfs(i)\/2);\r\n                siz=0;edges=0;\r\n            }\r\n        }\r\n        cout&lt;&lt;maxedges&lt;&lt;\"&#92;n\";\r\n      }\r\n        return 0;\r\n    }\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_1902_3\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"java\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n\r\n  import java.util.*;\r\n\r\n    public class Main {\r\n         public static void main(String[] args) \r\n         {\r\n            Scanner sc=new Scanner(System.in);\r\n            int t = sc.nextInt();\r\n            while(t--&gt;0)\r\n            {\r\n            int n=sc.nextInt();\r\n            int m=sc.nextInt();\r\n            ArrayList&lt;ArrayList&lt;Integer&gt;&gt; g=new ArrayList&lt;&gt;();\r\n            for(int i=0;i&lt;=n;i++)\r\n            g.add(new ArrayList&lt;Integer&gt;());\r\n            for(int i=0;i&lt;m;i++){\r\n                int u=sc.nextInt();\r\n                int v=sc.nextInt();\r\n                g.get(u).add(v);\r\n                g.get(v).add(u);\r\n            }\r\n            int max=Integer.MIN_VALUE;\r\n            boolean vis[]=new boolean[n+1];\r\n            for(int i=1;i&lt;=n;i++){\r\n                if(!vis[i]){\r\n                    int res=(dfs(g,i,vis));\r\n                    max=Math.max(res\/2,max);\r\n                }\r\n            }\r\n            System.out.println(max);\r\n            }\r\n         }\r\n        static int dfs(ArrayList&lt;ArrayList&lt;Integer&gt;&gt; g,int s,boolean vis[]){\r\n            int edge=g.get(s).size();\r\n            vis[s]=true;\r\n        for (int i=0;i&lt;g.get(s).size();i++) {  \r\n            if (vis[g.get(s).get(i)]==false){  \r\n                edge+=dfs(g,g.get(s).get(i),vis);  \r\n            }  \r\n        }\r\n        return edge;\r\n        }\r\n\r\n    }\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t <\/div>\r\n\t\t\t\t\t \r\n\t\t\t\t <\/div>\r\n <script>\r\n\t\tjQuery(function () {\r\n\t\t\tjQuery('#myTab_1902 a:first').tab('show')\r\n\t\t});\r\n\t\t\r\n\t\t\t\tjQuery(function(){\r\n\t\t\tvar b=\"fadeIn\";\r\n\t\t\tvar c;\r\n\t\t\tvar a;\r\n\t\t\td(jQuery(\"#myTab_1902 a\"),jQuery(\"#tab-content_1902\"));function d(e,f,g){\r\n\t\t\t\te.click(function(i){\r\n\t\t\t\t\ti.preventDefault();\r\n\t\t\t\t\tjQuery(this).tab(\"show\");\r\n\t\t\t\t\tvar h=jQuery(this).data(\"easein\");\r\n\t\t\t\t\tif(c){c.removeClass(a);}\r\n\t\t\t\t\tif(h){f.find(\"div.active\").addClass(\"animated \"+h);a=h;}\r\n\t\t\t\t\telse{if(g){f.find(\"div.active\").addClass(\"animated \"+g);a=g;}else{f.find(\"div.active\").addClass(\"animated \"+b);a=b;}}c=f.find(\"div.active\");\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\r\n\t\tfunction do_resize(){\r\n\r\n\t\t\tvar width=jQuery( '.tab-content .tab-pane iframe' ).width();\r\n\t\t\tvar height=jQuery( '.tab-content .tab-pane iframe' ).height();\r\n\r\n\t\t\tvar toggleSize = true;\r\n\t\t\tjQuery('iframe').animate({\r\n\t\t\t    width: toggleSize ? width : 640,\r\n\t\t\t    height: toggleSize ? height : 360\r\n\t\t\t  }, 250);\r\n\r\n\t\t\t  toggleSize = !toggleSize;\r\n\t\t}\r\n\r\n\r\n\t<\/script>\r\n\t\t\t\t\r\n\t\t\t<br \/>\n[forminator_quiz id=&quot;1944&quot;]<\/p>\n<p>This article tried to discuss Depth First Search, Disjoint Set. Hope this blog helps you understand and solve the problem. To practice more problems on Depth First Search, Disjoint Set you can check out <a href=\"#\"><\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Concepts Used Depth First Search, Disjoint Set Difficulty Level Medium Problem Statement : Given N number of vertices, M number of edges and relation between them to form an undirected graph, our task is to find the maximum number of edges among all the connected components in the given graph. Solution Approach : Introduction : [&hellip;]<\/p>\n","protected":false},"author":52,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[114],"tags":[],"class_list":["post-1880","post","type-post","status-publish","format-standard","hentry","category-graphs-interview-questions"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Graphs Interview Questions | Maximum Edges | Prepbytes<\/title>\n<meta name=\"description\" content=\"Idea Is to Traverse the Graph and Count the Edges for Every Connected Component (refer to the Connected Components Article) and Print the Maximum Edge Count.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/prepbytes.com\/blog\/maximum-edges\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Graphs Interview Questions | Maximum Edges | Prepbytes\" \/>\n<meta property=\"og:description\" content=\"Idea Is to Traverse the Graph and Count the Edges for Every Connected Component (refer to the Connected Components Article) and Print the Maximum Edge Count.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prepbytes.com\/blog\/maximum-edges\/\" \/>\n<meta property=\"og:site_name\" content=\"PrepBytes Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prepbytes0211\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-01T09:46:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-23T23:28:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527975034-Article_394.png\" \/>\n<meta name=\"author\" content=\"Prepbytes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prepbytes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-edges\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-edges\/\"},\"author\":{\"name\":\"Prepbytes\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\"},\"headline\":\"Maximum Edges\",\"datePublished\":\"2020-07-01T09:46:15+00:00\",\"dateModified\":\"2022-03-23T23:28:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-edges\/\"},\"wordCount\":566,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-edges\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527975034-Article_394.png\",\"articleSection\":[\"Graphs Interview Questions\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prepbytes.com\/blog\/maximum-edges\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-edges\/\",\"url\":\"https:\/\/prepbytes.com\/blog\/maximum-edges\/\",\"name\":\"Graphs Interview Questions | Maximum Edges | Prepbytes\",\"isPartOf\":{\"@id\":\"http:\/\/43.205.93.38\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-edges\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-edges\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527975034-Article_394.png\",\"datePublished\":\"2020-07-01T09:46:15+00:00\",\"dateModified\":\"2022-03-23T23:28:36+00:00\",\"description\":\"Idea Is to Traverse the Graph and Count the Edges for Every Connected Component (refer to the Connected Components Article) and Print the Maximum Edge Count.\",\"breadcrumb\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-edges\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prepbytes.com\/blog\/maximum-edges\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-edges\/#primaryimage\",\"url\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527975034-Article_394.png\",\"contentUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527975034-Article_394.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prepbytes.com\/blog\/maximum-edges\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/43.205.93.38\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Graphs Interview Questions\",\"item\":\"https:\/\/prepbytes.com\/blog\/category\/graphs-interview-questions\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Maximum Edges\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/43.205.93.38\/#website\",\"url\":\"http:\/\/43.205.93.38\/\",\"name\":\"PrepBytes Blog\",\"description\":\"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING\",\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/43.205.93.38\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"http:\/\/43.205.93.38\/#organization\",\"name\":\"Prepbytes\",\"url\":\"http:\/\/43.205.93.38\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"contentUrl\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"width\":160,\"height\":160,\"caption\":\"Prepbytes\"},\"image\":{\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/prepbytes0211\/\",\"https:\/\/www.instagram.com\/prepbytes\/\",\"https:\/\/www.linkedin.com\/company\/prepbytes\/\",\"https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA\"]},{\"@type\":\"Person\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\",\"name\":\"Prepbytes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"caption\":\"Prepbytes\"},\"url\":\"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Graphs Interview Questions | Maximum Edges | Prepbytes","description":"Idea Is to Traverse the Graph and Count the Edges for Every Connected Component (refer to the Connected Components Article) and Print the Maximum Edge Count.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/prepbytes.com\/blog\/maximum-edges\/","og_locale":"en_US","og_type":"article","og_title":"Graphs Interview Questions | Maximum Edges | Prepbytes","og_description":"Idea Is to Traverse the Graph and Count the Edges for Every Connected Component (refer to the Connected Components Article) and Print the Maximum Edge Count.","og_url":"https:\/\/prepbytes.com\/blog\/maximum-edges\/","og_site_name":"PrepBytes Blog","article_publisher":"https:\/\/www.facebook.com\/prepbytes0211\/","article_published_time":"2020-07-01T09:46:15+00:00","article_modified_time":"2022-03-23T23:28:36+00:00","og_image":[{"url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527975034-Article_394.png","type":"","width":"","height":""}],"author":"Prepbytes","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Prepbytes","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/prepbytes.com\/blog\/maximum-edges\/#article","isPartOf":{"@id":"https:\/\/prepbytes.com\/blog\/maximum-edges\/"},"author":{"name":"Prepbytes","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e"},"headline":"Maximum Edges","datePublished":"2020-07-01T09:46:15+00:00","dateModified":"2022-03-23T23:28:36+00:00","mainEntityOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/maximum-edges\/"},"wordCount":566,"commentCount":0,"publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/maximum-edges\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527975034-Article_394.png","articleSection":["Graphs Interview Questions"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prepbytes.com\/blog\/maximum-edges\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prepbytes.com\/blog\/maximum-edges\/","url":"https:\/\/prepbytes.com\/blog\/maximum-edges\/","name":"Graphs Interview Questions | Maximum Edges | Prepbytes","isPartOf":{"@id":"http:\/\/43.205.93.38\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/maximum-edges\/#primaryimage"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/maximum-edges\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527975034-Article_394.png","datePublished":"2020-07-01T09:46:15+00:00","dateModified":"2022-03-23T23:28:36+00:00","description":"Idea Is to Traverse the Graph and Count the Edges for Every Connected Component (refer to the Connected Components Article) and Print the Maximum Edge Count.","breadcrumb":{"@id":"https:\/\/prepbytes.com\/blog\/maximum-edges\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prepbytes.com\/blog\/maximum-edges\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prepbytes.com\/blog\/maximum-edges\/#primaryimage","url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527975034-Article_394.png","contentUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645527975034-Article_394.png"},{"@type":"BreadcrumbList","@id":"https:\/\/prepbytes.com\/blog\/maximum-edges\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/43.205.93.38\/"},{"@type":"ListItem","position":2,"name":"Graphs Interview Questions","item":"https:\/\/prepbytes.com\/blog\/category\/graphs-interview-questions\/"},{"@type":"ListItem","position":3,"name":"Maximum Edges"}]},{"@type":"WebSite","@id":"http:\/\/43.205.93.38\/#website","url":"http:\/\/43.205.93.38\/","name":"PrepBytes Blog","description":"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING","publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/43.205.93.38\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"http:\/\/43.205.93.38\/#organization","name":"Prepbytes","url":"http:\/\/43.205.93.38\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/","url":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","contentUrl":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","width":160,"height":160,"caption":"Prepbytes"},"image":{"@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/prepbytes0211\/","https:\/\/www.instagram.com\/prepbytes\/","https:\/\/www.linkedin.com\/company\/prepbytes\/","https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA"]},{"@type":"Person","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e","name":"Prepbytes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","caption":"Prepbytes"},"url":"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/"}]}},"_links":{"self":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/users\/52"}],"replies":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/comments?post=1880"}],"version-history":[{"count":8,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1880\/revisions"}],"predecessor-version":[{"id":8204,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1880\/revisions\/8204"}],"wp:attachment":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/media?parent=1880"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/categories?post=1880"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/tags?post=1880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}