41069
41069
<ul class="md-nav__list">
41070
41070
41071
41071
<li class="md-nav__item">
41072
- <a href="#solution-1" class="md-nav__link">
41072
+ <a href="#solution-1-counting " class="md-nav__link">
41073
41073
<span class="md-ellipsis">
41074
- Solution 1
41075
- </span>
41076
- </a>
41077
-
41078
- </li>
41079
-
41080
- <li class="md-nav__item">
41081
- <a href="#solution-2" class="md-nav__link">
41082
- <span class="md-ellipsis">
41083
- Solution 2
41074
+ Solution 1: Counting
41084
41075
</span>
41085
41076
</a>
41086
41077
@@ -79465,33 +79456,30 @@ <h2 id="description">Description</h2>
79465
79456
<h2 id="solutions">Solutions</h2>
79466
79457
<!-- solution:start -->
79467
79458
79468
- <h3 id="solution-1">Solution 1</h3>
79459
+ <h3 id="solution-1-counting">Solution 1: Counting</h3>
79460
+ <p>We can use a one-dimensional array $\textit{cnt}$ to record the degree of each city and a two-dimensional array $\textit{g}$ to record whether there is a road between each pair of cities. If there is a road between city $a$ and city $b$, then $\textit{g}[a][b] = \textit{g}[b][a] = 1$; otherwise, $\textit{g}[a][b] = \textit{g}[b][a] = 0$.</p>
79461
+ <p>Next, we enumerate each pair of cities $(a, b)$, where $a \lt b$, and calculate their network rank, which is $\textit{cnt}[a] + \textit{cnt}[b] - \textit{g}[a][b]$. The maximum value among these is the answer.</p>
79462
+ <p>The time complexity is $O(n^2)$, and the space complexity is $O(n^2)$. Here, $n$ is the number of cities.</p>
79469
79463
<div class="tabbed-set tabbed-alternate" data-tabs="1:5"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python3</label><label for="__tabbed_1_2">Java</label><label for="__tabbed_1_3">C++</label><label for="__tabbed_1_4">Go</label><label for="__tabbed_1_5">TypeScript</label></div>
79470
79464
<div class="tabbed-content">
79471
79465
<div class="tabbed-block">
79472
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
79473
- <span class="normal"> 2</span>
79474
- <span class="normal"> 3</span>
79475
- <span class="normal"> 4</span>
79476
- <span class="normal"> 5</span>
79477
- <span class="normal"> 6</span>
79478
- <span class="normal"> 7</span>
79479
- <span class="normal"> 8</span>
79480
- <span class="normal"> 9</span>
79481
- <span class="normal">10</span>
79482
- <span class="normal">11</span>
79483
- <span class="normal">12</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Solution</span><span class="p">:</span>
79466
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
79467
+ <span class="normal">2</span>
79468
+ <span class="normal">3</span>
79469
+ <span class="normal">4</span>
79470
+ <span class="normal">5</span>
79471
+ <span class="normal">6</span>
79472
+ <span class="normal">7</span>
79473
+ <span class="normal">8</span>
79474
+ <span class="normal">9</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Solution</span><span class="p">:</span>
79484
79475
<span class="k">def</span> <span class="nf">maximalNetworkRank</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">roads</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]])</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
79485
- <span class="n">g</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">set</span><span class="p">)</span>
79476
+ <span class="n">g</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">n</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">)]</span>
79477
+ <span class="n">cnt</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">n</span>
79486
79478
<span class="k">for</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="ow">in</span> <span class="n">roads</span><span class="p">:</span>
79487
- <span class="n">g</span><span class="p">[</span><span class="n">a</span><span class="p">]</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">b</span><span class="p">)</span>
79488
- <span class="n">g</span><span class="p">[</span><span class="n">b</span><span class="p">]</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
79489
- <span class="n">ans</span> <span class="o">=</span> <span class="mi">0</span>
79490
- <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
79491
- <span class="k">for</span> <span class="n">b</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">a</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">n</span><span class="p">):</span>
79492
- <span class="k">if</span> <span class="p">(</span><span class="n">t</span> <span class="o">:=</span> <span class="nb">len</span><span class="p">(</span><span class="n">g</span><span class="p">[</span><span class="n">a</span><span class="p">])</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">g</span><span class="p">[</span><span class="n">b</span><span class="p">])</span> <span class="o">-</span> <span class="p">(</span><span class="n">a</span> <span class="ow">in</span> <span class="n">g</span><span class="p">[</span><span class="n">b</span><span class="p">]))</span> <span class="o">></span> <span class="n">ans</span><span class="p">:</span>
79493
- <span class="n">ans</span> <span class="o">=</span> <span class="n">t</span>
79494
- <span class="k">return</span> <span class="n">ans</span>
79479
+ <span class="n">g</span><span class="p">[</span><span class="n">a</span><span class="p">][</span><span class="n">b</span><span class="p">]</span> <span class="o">=</span> <span class="n">g</span><span class="p">[</span><span class="n">b</span><span class="p">][</span><span class="n">a</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
79480
+ <span class="n">cnt</span><span class="p">[</span><span class="n">a</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span>
79481
+ <span class="n">cnt</span><span class="p">[</span><span class="n">b</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span>
79482
+ <span class="k">return</span> <span class="nb">max</span><span class="p">(</span><span class="n">cnt</span><span class="p">[</span><span class="n">a</span><span class="p">]</span> <span class="o">+</span> <span class="n">cnt</span><span class="p">[</span><span class="n">b</span><span class="p">]</span> <span class="o">-</span> <span class="n">g</span><span class="p">[</span><span class="n">a</span><span class="p">][</span><span class="n">b</span><span class="p">]</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="k">for</span> <span class="n">b</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">a</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">n</span><span class="p">))</span>
79495
79483
</code></pre></div></td></tr></table></div>
79496
79484
</div>
79497
79485
<div class="tabbed-block">
@@ -79640,8 +79628,8 @@ <h3 id="solution-1">Solution 1</h3>
79640
79628
<span class="normal">15</span>
79641
79629
<span class="normal">16</span>
79642
79630
<span class="normal">17</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">maximalNetworkRank</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">,</span><span class="w"> </span><span class="nx">roads</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[][])</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
79643
- <span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">g</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[][]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">.</span><span class="kr">from</span><span class="p">(</span><span class="ow">new</span><span class=" w"> </span><span class="nb">Array </span><span class="p">( </span><span class="nx">n </span><span class="p">), </span><span class="w"> </span><span class="p">() </span><span class="w"> </span><span class="p">=> </span><span class="w"> </span><span class="ow">new </span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">n</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">));</span>
79644
- <span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">cnt</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class=" nb">Array</span><span class="p">(</span><span class="nx">n</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span>
79631
+ <span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">g</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[][]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">.</span><span class="kr">from</span><span class="p">({ </span><span class="w"> </span><span class="nx">length </span><span class="o">: </span><span class="w"> </span><span class="kt">n </span><span class="w"> </span><span class="p">}, </span><span class="w"> </span><span class="p">() </span><span class="w"> </span><span class="p">=> </span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">n</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">));</span>
79632
+ <span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">cnt</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">n</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span>
79645
79633
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">const</span><span class="w"> </span><span class="p">[</span><span class="nx">a</span><span class="p">,</span><span class="w"> </span><span class="nx">b</span><span class="p">]</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="nx">roads</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
79646
79634
<span class="w"> </span><span class="nx">g</span><span class="p">[</span><span class="nx">a</span><span class="p">][</span><span class="nx">b</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
79647
79635
<span class="w"> </span><span class="nx">g</span><span class="p">[</span><span class="nx">b</span><span class="p">][</span><span class="nx">a</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
@@ -79662,35 +79650,6 @@ <h3 id="solution-1">Solution 1</h3>
79662
79650
</div>
79663
79651
<!-- solution:end -->
79664
79652
79665
- <!-- solution:start -->
79666
-
79667
- <h3 id="solution-2">Solution 2</h3>
79668
- <div class="tabbed-set tabbed-alternate" data-tabs="2:1"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Python3</label></div>
79669
- <div class="tabbed-content">
79670
- <div class="tabbed-block">
79671
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
79672
- <span class="normal">2</span>
79673
- <span class="normal">3</span>
79674
- <span class="normal">4</span>
79675
- <span class="normal">5</span>
79676
- <span class="normal">6</span>
79677
- <span class="normal">7</span>
79678
- <span class="normal">8</span>
79679
- <span class="normal">9</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Solution</span><span class="p">:</span>
79680
- <span class="k">def</span> <span class="nf">maximalNetworkRank</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">roads</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]])</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
79681
- <span class="n">g</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">n</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">)]</span>
79682
- <span class="n">cnt</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">n</span>
79683
- <span class="k">for</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="ow">in</span> <span class="n">roads</span><span class="p">:</span>
79684
- <span class="n">g</span><span class="p">[</span><span class="n">a</span><span class="p">][</span><span class="n">b</span><span class="p">]</span> <span class="o">=</span> <span class="n">g</span><span class="p">[</span><span class="n">b</span><span class="p">][</span><span class="n">a</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
79685
- <span class="n">cnt</span><span class="p">[</span><span class="n">a</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span>
79686
- <span class="n">cnt</span><span class="p">[</span><span class="n">b</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span>
79687
- <span class="k">return</span> <span class="nb">max</span><span class="p">(</span><span class="n">cnt</span><span class="p">[</span><span class="n">a</span><span class="p">]</span> <span class="o">+</span> <span class="n">cnt</span><span class="p">[</span><span class="n">b</span><span class="p">]</span> <span class="o">-</span> <span class="n">g</span><span class="p">[</span><span class="n">a</span><span class="p">][</span><span class="n">b</span><span class="p">]</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="k">for</span> <span class="n">b</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">a</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">n</span><span class="p">))</span>
79688
- </code></pre></div></td></tr></table></div>
79689
- </div>
79690
- </div>
79691
- </div>
79692
- <!-- solution:end -->
79693
-
79694
79653
<!-- problem:end -->
79695
79654
79696
79655
0 commit comments