Class Solution

  • All Implemented Interfaces:

    
    public final class Solution
    
                        

    2493 - Divide Nodes Into the Maximum Number of Groups\.

    Hard

    You are given a positive integer n representing the number of nodes in an undirected graph. The nodes are labeled from 1 to n.

    You are also given a 2D integer array edges, where <code>edgesi = a<sub>i,</sub> b<sub>i</sub></code> indicates that there is a bidirectional edge between nodes <code>a<sub>i</sub></code> and <code>b<sub>i</sub></code>. Notice that the given graph may be disconnected.

    Divide the nodes of the graph into m groups ( 1-indexed ) such that:

    • Each node in the graph belongs to exactly one group.

    • For every pair of nodes in the graph that are connected by an edge <code>a<sub>i,</sub> b<sub>i</sub></code>, if <code>a<sub>i</sub></code> belongs to the group with index x, and <code>b<sub>i</sub></code> belongs to the group with index y, then |y - x| = 1.

    Return the maximum number of groups (i.e., maximum m) into which you can divide the nodes. Return -1 if it is impossible to group the nodes with the given conditions.

    Example 1:

    Input: n = 6, edges = \[\[1,2],1,4,1,5,2,6,2,3,4,6]

    Output: 4

    Explanation: As shown in the image we:

    • Add node 5 to the first group.

    • Add node 1 to the second group.

    • Add nodes 2 and 4 to the third group.

    • Add nodes 3 and 6 to the fourth group.

    We can see that every edge is satisfied. It can be shown that that if we create a fifth group and move any node from the third or fourth group to it, at least on of the edges will not be satisfied.

    Example 2:

    Input: n = 3, edges = \[\[1,2],2,3,3,1]

    Output: -1

    Explanation: If we add node 1 to the first group, node 2 to the second group, and node 3 to the third group to satisfy the first two edges, we can see that the third edge will not be satisfied. It can be shown that no grouping is possible.

    Constraints:

    • 1 &lt;= n &lt;= 500

    • <code>1 <= edges.length <= 10<sup>4</sup></code>

    • edges[i].length == 2

    • <code>1 <= a<sub>i</sub>, b<sub>i</sub><= n</code>

    • <code>a<sub>i</sub> != b<sub>i</sub></code>

    • There is at most one edge between any pair of vertices.

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
    • Field Summary

      Fields 
      Modifier and Type Field Description
    • Constructor Summary

      Constructors 
      Constructor Description
      Solution()
    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
    • Method Summary

      Modifier and Type Method Description
      final Integer magnificentSets(Integer n, Array<IntArray> edges)
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait