1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-11 02:58:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/将节点分成尽可能多的组 [divide-nodes-into-the-maximum-number-of-groups].html

51 lines
2.7 KiB
HTML
Raw Normal View History

2022-12-04 20:08:50 +08:00
<p>给你一个正整数&nbsp;<code>n</code>&nbsp;,表示一个 <strong>无向</strong>&nbsp;图中的节点数目,节点编号从&nbsp;<code>1</code>&nbsp;&nbsp;<code>n</code>&nbsp;</p>
<p>同时给你一个二维整数数组&nbsp;<code>edges</code>&nbsp;,其中&nbsp;<code>edges[i] = [a<sub>i, </sub>b<sub>i</sub>]</code>&nbsp;表示节点&nbsp;<code>a<sub>i</sub></code>&nbsp;<code>b<sub>i</sub></code><sub>&nbsp;</sub>之间有一条&nbsp;<strong>双向</strong>&nbsp;边。注意给定的图可能是不连通的。</p>
<p>请你将图划分为&nbsp;<code>m</code>&nbsp;个组(编号从 <strong>1</strong>&nbsp;开始),满足以下要求:</p>
<ul>
<li>图中每个节点都只属于一个组。</li>
<li>图中每条边连接的两个点&nbsp;<code>[a<sub>i, </sub>b<sub>i</sub>]</code>&nbsp;,如果&nbsp;<code>a<sub>i</sub></code>&nbsp;属于编号为&nbsp;<code>x</code>&nbsp;的组,<code>b<sub>i</sub></code>&nbsp;属于编号为&nbsp;<code>y</code>&nbsp;的组,那么&nbsp;<code>|y - x| = 1</code>&nbsp;</li>
</ul>
<p>请你返回最多可以将节点分为多少个组(也就是最大的<em>&nbsp;</em><code>m</code>&nbsp;)。如果没办法在给定条件下分组,请你返回&nbsp;<code>-1</code>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2022/10/13/example1.png" style="width: 352px; height: 201px;"></p>
<pre><b>输入:</b>n = 6, edges = [[1,2],[1,4],[1,5],[2,6],[2,3],[4,6]]
<b>输出:</b>4
<b>解释:</b>如上图所示,
- 节点 5 在第一个组。
- 节点 1 在第二个组。
- 节点 2 和节点 4 在第三个组。
- 节点 3 和节点 6 在第四个组。
所有边都满足题目要求。
如果我们创建第五个组,将第三个组或者第四个组中任何一个节点放到第五个组,至少有一条边连接的两个节点所属的组编号不符合题目要求。
</pre>
<p><strong>示例 2</strong></p>
<pre><b>输入:</b>n = 3, edges = [[1,2],[2,3],[3,1]]
<b>输出:</b>-1
<b>解释:</b>如果我们将节点 1 放入第一个组,节点 2 放入第二个组,节点 3 放入第三个组,前两条边满足题目要求,但第三条边不满足题目要求。
没有任何符合题目要求的分组方式。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n &lt;= 500</code></li>
<li><code>1 &lt;= edges.length &lt;= 10<sup>4</sup></code></li>
<li><code>edges[i].length == 2</code></li>
<li><code>1 &lt;= a<sub>i</sub>, b<sub>i</sub> &lt;= n</code></li>
<li><code>a<sub>i</sub> != b<sub>i</sub></code></li>
<li>两个点之间至多只有一条边。</li>
</ul>