<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Unlimited Code Works</title>
  
  <subtitle>A pessimist because of intelligence, but an optimist because of will.</subtitle>
  <link href="https://unlimited-code.works/atom.xml" rel="self"/>
  
  <link href="https://unlimited-code.works/"/>
  <updated>2016-08-28T03:27:01.000Z</updated>
  <id>https://unlimited-code.works/</id>
  
  <author>
    <name>Peifeng Yu</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>GSoC 2016: LLDB Support for KDevelop - Final Report</title>
    <link href="https://unlimited-code.works/blog/2016/08/20/gsoc-kdevelop-lldb-final-report/"/>
    <id>https://unlimited-code.works/blog/2016/08/20/gsoc-kdevelop-lldb-final-report/</id>
    <published>2016-08-21T03:51:45.000Z</published>
    <updated>2016-08-28T03:27:01.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="introduction">Introduction<a class="header-anchor" href="#introduction"></a></h2><p>The aim of this post is to provide an insight into various aspects of the LLDB plugin, so that it is better understood, and can be used by more people. Should anyone want to improve it or add more features, he/she will also find useful technical details here.</p><p>In general, the LLDB plugin teaches KDevelop to talk to the standalone LLDB MI Driver (<code>lldb-mi</code>), so that it’s possible to use LLDB as an alternative debugger backend for KDevelop.</p><p>The rest of the post is orgainzed as follow</p><ul><li><a href="#setting-up">Setting Up</a> provides necessary information on how to get everything work from source code</li><li><a href="#features">Features</a> gives a detailed description of available features implemented in the LLDB plugin</li><li><a href="#roadmap">Roadmap</a> lists some future works.</li></ul><h2 id="setting-up">Setting Up<a class="header-anchor" href="#setting-up"></a></h2><h3 id="custom-build-of-lldb">Custom Build of LLDB<a class="header-anchor" href="#custom-build-of-lldb"></a></h3><p>First thing first, you need a working LLDB before you can use it inside KDevelop. For the LLDB MI Driver (<code>lldb-mi</code>), while it’s a standalone executable, its code is inside the LLDB repository and thus should come with a normal <code>LLDB</code> installation.</p><p>However, as the current release of LLDB MI Driver contains several bugs, you have to build LLDB from source, with patches applied. Please refer to <a href="https://lldb.llvm.org/resources/build.html">Building LLDB</a> for more detailed information on how to compile.</p><p>To apply patches, after checking out the source code, run</p><pre class="command-line language-bash" style="max-height: 30em" data-user="aetf" data-prismjs-copy-timeout="500" tabindex="0"><code id="a6781e3f" class="language-bash" data-prism-hydrate="{&quot;element&quot;:&quot;a6781e3f&quot;,&quot;language&quot;:&quot;bash&quot;,&quot;code&quot;:&quot;cd llvm/tools/lldb/tools/lldb-mi\npatch -i /path/to/patch.patch&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;numberOfLines&quot;:2,&quot;outputLines&quot;:[],&quot;continuationLineIndicies&quot;:{},&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;\u003cspan class=\&quot;token command\&quot;\u003e<span class=\&quot;token builtin class-name\&quot;>cd</span> llvm/tools/lldb/tools/lldb-mi</span>\n<span class=\&quot;token command\&quot;>patch <span class=\&quot;token parameter variable\&quot;>-i</span> /path/to/patch.patch</span>&quot;}"><span class="command-line-prompt"><span data-user="aetf" data-host="localhost"></span><span data-user="aetf" data-host="localhost"></span></span><span class="token command"><span class="token builtin class-name">cd</span> llvm/tools/lldb/tools/lldb-mi</span><span class="token command">patch <span class="token parameter variable">-i</span> /path/to/patch.patch</span></code></pre><p>Right now, only the patch for <a href="https://llvm.org/bugs/show_bug.cgi?id=28026" title="LLDB-MI doesn't properly output CLI command response using console-stream-output stream">Bug 28026</a> is mandatory for stable reason, but there are patches fixing other minor problems available, too, please refer to <a href="/blog/2016/08/03/gsoc-kdevelop-lldb-status/" title="Current Status of LLDB Plugin for KDevelop">Current Status of LLDB Plugin for KDevelop</a>for a complete list.</p><h3 id="build-kdevelop-from-source">Build KDevelop From Source<a class="header-anchor" href="#build-kdevelop-from-source"></a></h3><p>While the LLDB plugin has been merged into the master branch in <a href="https://invent.kde.org/kdevelop/kdevelop">KDevelop repository</a>, it is not included in any release yet, so you need to build KDevelop from source. You can find step-by-step guides on <a href="https://community.kde.org/KDevelop/HowToCompile_v5">the community wiki</a>. Also, if you don’t want to use <code>kdesrc-build</code>, be sure to refer to <a href="/blog/2016/08/03/build-kdevelop-against-custom-kdevplatform/" title="my post">my post</a> for how to avoid messing up with system installed KDevelop.</p><h2 id="features">Features<a class="header-anchor" href="#features"></a></h2><p>This section gives a detailed introduction for important features.</p><h3 id="config-page">Config Page<a class="header-anchor" href="#config-page"></a></h3><p>As already covered in my <a href="/blog/2016/08/03/gsoc-kdevelop-lldb-status/" title="previous post">previous post</a>, the LLDB plulgin provides the same configuration interface as the good old GDB one. When editing a Debug configuration, the combox at the top-right corner in the Edit Launch Configuration dialog lets you select either GDB or LLDB as backend.</p><p><img data-zoom-src="/assets/img/huge_gsoc-kdevelop-lldb-status-lldbconfigpage.png" data-src="/assets/img/body_gsoc-kdevelop-lldb-status-lldbconfigpage.png" alt="LLDB Config Page" title="LLDB Config Page" /></p><p>While the defaults should work in most cases, the LLDB backend is configurable in many aspects. Options are grouped into three categories.</p><ul><li><strong>Debugger</strong>: settings about where to find the debugger executable and how to launch it.</li><li><strong>Options</strong>: settings that control various behaviors during a debugging session.</li><li><strong>Remote Debugging</strong>: settings specific to remote debugging.</li></ul><table><thead><tr><th style="text-align:left"><strong>Setting name</strong></th><th style="text-align:left"><strong>Default value</strong></th><th style="text-align:left"><strong>What does it do?</strong></th></tr></thead><tbody><tr><td style="text-align:left"><code>Debugger executable</code></td><td style="text-align:left"><code>lldb-mi</code> in PATH</td><td style="text-align:left">The LLDB MI Driver executable<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></td></tr><tr><td style="text-align:left"><code>Arguments</code></td><td style="text-align:left">Empty</td><td style="text-align:left">Command line arguments passed to the LLDB MI Driver when launching</td></tr><tr><td style="text-align:left"><code>Environment</code></td><td style="text-align:left">Default Profile</td><td style="text-align:left">Environment variables for the LLDB MI Driver (<strong>not</strong> for the inferior)</td></tr><tr><td style="text-align:left"><code>Inherit system environment</code></td><td style="text-align:left">Yes</td><td style="text-align:left">Whether inherit system environment variables when launching the LLDB MI Driver</td></tr><tr><td style="text-align:left"><code>Config script</code></td><td style="text-align:left">Empty</td><td style="text-align:left">This script is sourced by LLDB right before launching the inferior<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup></td></tr><tr><td style="text-align:left"><code>Break on start</code></td><td style="text-align:left">No</td><td style="text-align:left">Whether stop at the entry point of the program when launching the inferior</td></tr><tr><td style="text-align:left"><code>Start debugger with</code></td><td style="text-align:left"><code>Application Output</code></td><td style="text-align:left">Which tool view should be raised up when staruing the debugging session. Available options are <code>Application Output</code>, <code>Framestack</code>, <code>LLDB Console</code>.</td></tr><tr><td style="text-align:left"><code>Remote Debugging</code></td><td style="text-align:left">No</td><td style="text-align:left">Do remote debugging or not</td></tr><tr><td style="text-align:left"><code>Remote server</code></td><td style="text-align:left">Empty</td><td style="text-align:left">The address of the remote debugging server, in the form <code>host:port</code><sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup></td></tr><tr><td style="text-align:left"><code>Remote work path</code></td><td style="text-align:left">Empty</td><td style="text-align:left">A writable directory on the remote machine. Compiled inferior would be put into this directory for executing on the remote machine</td></tr></tbody></table><h3 id="breakpoints">Breakpoints<a class="header-anchor" href="#breakpoints"></a></h3><p>Breakpoints is a must for any debugging tool to be useful. And the LLDB-powered debugging backend also provides good breakpoint support. Apart from setting breakpoints by clicking on the left side of the source file, the breakpoints tool view shows all breakpoints in the project as usual.</p><p><img data-zoom-src="/assets/img/huge_gsoc-kdevelop-lldb-breakpoints.png" data-src="/assets/img/body_gsoc-kdevelop-lldb-breakpoints.png" alt="Breakpoints Tool view" title="Breakpoints Tool view" /></p><h3 id="framestack">Framestack<a class="header-anchor" href="#framestack"></a></h3><p>Easily getting lost when debugging multi-threaded program? Framestack tool view comes to rescue. Navigating among threads and frames is as easy as clicking the corresponding item. A little difference from GDB is, low level functions like <code>_start</code> and <code>__libc_start_main</code> are also shown in the list.</p><p><img data-zoom-src="/assets/img/huge_gsoc-kdevelop-lldb-framestack.png" data-src="/assets/img/thumb_gsoc-kdevelop-lldb-framestack.png" alt="Framestack tool view" title="Framestack tool view" /></p><h3 id="variables">Variables<a class="header-anchor" href="#variables"></a></h3><p>The variables tool view shows local variables in the current frame, as well as values of manually set watches. Thanks to the newly written data formatter (equivalent to pretty printers in GDB), the LLDB backend understands common <code>STL</code> and <code>Qt</code> types, as well as a few <code>KDE</code> types. This means, <code>std::string</code> and <code>QString</code> are shown as string. Array-like types (various list/vector) and dictionary-like types (various map/set) are also shown in a human readable format.</p><div class="note info"><h4 id="unicode-values-and-byte-array">Unicode values and byte array<a class="header-anchor" href="#unicode-values-and-byte-array"></a></h4><p>Unicode values are safely escaped and unescaped when transfered between KDevelop and the LLDB MI Driver, this means they can be correctly displayed in the UI, rather than showing garbage symbols as the case for pretty printers in GDB.</p></div><p><img data-zoom-src="/assets/img/huge_gsoc-kdevelop-lldb-variables.png" data-src="/assets/img/thumb_gsoc-kdevelop-lldb-variables.png" alt="Variables tool view" title="Variables tool view" /></p><p>By hovering mouse on a variable name in the source file, it’s value is revealed in a popup, correctly formatted. Clicking <code>Watch this</code> adds this variable as a manually set watch. Unfortunately, <code>Stop on change</code> doesn’t work yet, due to the lack of necessary commands in the LLDB MI Driver.</p><p><img data-zoom-src="/assets/img/huge_gsoc-kdevelop-lldb-hover.png" data-src="/assets/img/body_gsoc-kdevelop-lldb-hover.png" alt="Hover over a symbol" title="Hover over a symbol" /></p><div class="note info"><h4 id="using-data-formatter-scripts-outside-kdevelop">Using data formatter scripts outside KDevelop<a class="header-anchor" href="#using-data-formatter-scripts-outside-kdevelop"></a></h4><p>The data formatter scripts bundled are not specific to KDevelop, and can actually be used directly in plain LLDB CLI. Just import the corresponding script <code>command script import /path/to/formatter/qt.py</code>, and you’ll get the same pretty formatted variables in plain command line.</p><p>The scripts usually can be found in <code>/usr/share/kdevlldb/formatters</code> after the installation of KDevelop, or you can get the latest git version in the <a href="https://invent.kde.org/kdevelop/kdevelop">repository</a>, they are in <code>plugins/lldb/formatters</code>.</p></div><h3 id="debugger-console">Debugger Console<a class="header-anchor" href="#debugger-console"></a></h3><p>The debugger console is totally reworked. The new ‘repeat’ mode can save you a few types if you want to resend the last command.</p><p><img data-zoom-src="/assets/img/huge_gsoc-kdevelop-lldb-debuggerconsole.png" data-src="/assets/img/body_gsoc-kdevelop-lldb-debuggerconsole.png" alt="Debugger console" title="Debugger console" /></p><h3 id="remote-debugging">Remote Debugging<a class="header-anchor" href="#remote-debugging"></a></h3><p>Remote debugging has also been redesigned and should be easier to use. The configuration is largely simplified. After specifying the address to the remote debugging server and a writable working directory, KDevelop will take care of uploading and starting the inferior.</p><h3 id="known-limitations">Known limitations<a class="header-anchor" href="#known-limitations"></a></h3><p>However, there are <a href="/blog/2016/08/03/gsoc-kdevelop-lldb-status/#known-issues" title="a few limitations">a few limitations</a> in this version.That post also has a comprehensive list of <a href="/blog/2016/08/03/gsoc-kdevelop-lldb-status/#upstream-bugs" title="related bug reports">related bug reports</a> in LLDB.</p><h2 id="roadmap">Roadmap<a class="header-anchor" href="#roadmap"></a></h2><p>Other than finishing up missing functionalities in the LLDB plugin, the TODO list is as follow:</p><ul><li>Get bugs in lldb-mi fixed</li><li>Global debug config for attach to process and examine core file</li></ul><p>For a comprehensive technical TODO list, please refer to <code>plugins/lldb/TODO.txt</code> in the <a href="https://invent.kde.org/kdevelop/kdevelop/-/blob/master/plugins/lldb/TODO.txt">repository</a></p><hr class="footnotes-sep" /><section class="footnotes"><ol class="footnotes-list"><li id="fn1" class="footnote-item"><p>The executable for the LLDB MI Driver is <code>lldb-mi</code>, which usually can be found in the same directory as the main <code>lldb</code> executable. <a href="#fnref1" class="footnote-backref">↩︎</a></p></li><li id="fn2" class="footnote-item"><p>This happens after all internal commands issued by KDevelop, so you have chance to change every settings available in LLDB. But be careful because KDevelop relies on several settings to work properly. <a href="#fnref2" class="footnote-backref">↩︎</a></p></li><li id="fn3" class="footnote-item"><p>While LLDB uses GDB Remote Protocol, it’s only compatible with LLDB’s own implementation, which can be launched by the command line <code>lldb-server gdbserver</code>. See <a href="/blog/2016/08/03/gsoc-kdevelop-lldb-status/#known-issues" title="Known Issues">Known Issues</a> for more information. <a href="#fnref3" class="footnote-backref">↩︎</a></p></li></ol></section>]]></content>
    
    
    <summary type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The aim of this post is to provide an insight into various aspects of the LLDB plugin, so that it is better understood, and can be used by more people. Should anyone want to improve it or add more features, he/she will also find useful technical details here.&lt;/p&gt;
&lt;p&gt;In general, the LLDB plugin teaches KDevelop to talk to the standalone LLDB MI Driver (&lt;code&gt;lldb-mi&lt;/code&gt;), so that it’s possible to use LLDB as an alternative debugger backend for KDevelop.&lt;/p&gt;
&lt;p&gt;The rest of the post is orgainzed as follow&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#setting-up&quot;&gt;Setting Up&lt;/a&gt; provides necessary information on how to get everything work from source code&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#features&quot;&gt;Features&lt;/a&gt; gives a detailed description of available features implemented in the LLDB plugin&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#roadmap&quot;&gt;Roadmap&lt;/a&gt; lists some future works.&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    
    <category term="c++" scheme="https://unlimited-code.works/tags/c/"/>
    
    <category term="KDE" scheme="https://unlimited-code.works/tags/kde/"/>
    
    <category term="KDevelop" scheme="https://unlimited-code.works/tags/kdevelop/"/>
    
    <category term="OpenSource" scheme="https://unlimited-code.works/tags/opensource/"/>
    
    <category term="GSoC2016" scheme="https://unlimited-code.works/tags/gsoc2016/"/>
    
    <category term="LLDB" scheme="https://unlimited-code.works/tags/lldb/"/>
    
  </entry>
  
  <entry>
    <title>Build KDevelop Against Custom KDevPlatform</title>
    <link href="https://unlimited-code.works/blog/2016/08/03/build-kdevelop-against-custom-kdevplatform/"/>
    <id>https://unlimited-code.works/blog/2016/08/03/build-kdevelop-against-custom-kdevplatform/</id>
    <published>2016-08-03T19:04:49.000Z</published>
    <updated>2025-08-09T21:29:05.000Z</updated>
    
    <content type="html"><![CDATA[<div class="note info"><p>2018.3.20:Now KDevPlatform repo is merged into the KDevelop repo, and there is no need to go through the steps mentioned in this post to get things working.However, the <a href="#run-newly-built-kdevelop">last section</a> still applies in order to not load plugins from the system-wide KDevelop installation.</p></div><p>KDevelop is tightly coupled with KDevPlatform and from time to time you need to hack them both when developing. But then without caution, you’ll link against the system bundled KDevPlatform libraries and spend the whole day trying to find out why the hall the code you wrote didn’t have any effects.</p><p>That’s annoying and here’s how to make sure you are linking to the right copy.</p><h4 id="compile-install-kdevplatform">Compile &amp; Install KDevPlatform<a class="header-anchor" href="#compile-install-kdevplatform"></a></h4><p>Your awesome super hacked KDevPlatform need to be compiled and installed to somewhere first, say <code>~/stage</code>. Don’t install it to any standard path like <code>/usr</code> or <code>/usr/local</code> just to avoid messing with the rest of the system. As a rule of thumb, if you need sudo privilege when doing <code>make install</code>, then you probably should consider somewhere else.</p><pre class="command-line language-bash" style="max-height: 30em" data-user="aetf" data-prismjs-copy-timeout="500" tabindex="0"><code id="57308e3e" class="language-bash" data-prism-hydrate="{&quot;element&quot;:&quot;57308e3e&quot;,&quot;language&quot;:&quot;bash&quot;,&quot;code&quot;:&quot;mkdir build \u0026&amp; cd build\ncmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=~/stage ..\nmake install&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;numberOfLines&quot;:3,&quot;outputLines&quot;:[],&quot;continuationLineIndicies&quot;:{},&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;\u003cspan class=\&quot;token command\&quot;\u003e<span class=\&quot;token function\&quot;>mkdir</span> build <span class=\&quot;token operator\&quot;>&amp;amp;&amp;amp;</span> <span class=\&quot;token builtin class-name\&quot;>cd</span> build</span>\n<span class=\&quot;token command\&quot;>cmake <span class=\&quot;token parameter variable\&quot;>-DCMAKE_BUILD_TYPE</span><span class=\&quot;token operator\&quot;>=</span>Debug <span class=\&quot;token parameter variable\&quot;>-DCMAKE_INSTALL_PREFIX</span><span class=\&quot;token operator\&quot;>=~</span>/stage <span class=\&quot;token punctuation\&quot;>..</span></span>\n<span class=\&quot;token command\&quot;><span class=\&quot;token function\&quot;>make</span> <span class=\&quot;token function\&quot;>install</span></span>&quot;}"><span class="command-line-prompt"><span data-user="aetf" data-host="localhost"></span><span data-user="aetf" data-host="localhost"></span><span data-user="aetf" data-host="localhost"></span></span><span class="token command"><span class="token function">mkdir</span> build <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">cd</span> build</span><span class="token command">cmake <span class="token parameter variable">-DCMAKE_BUILD_TYPE</span><span class="token operator">=</span>Debug <span class="token parameter variable">-DCMAKE_INSTALL_PREFIX</span><span class="token operator">=~</span>/stage <span class="token punctuation">..</span></span><span class="token command"><span class="token function">make</span> <span class="token function">install</span></span></code></pre><p>This should give you bunch of files in <code>~/stage</code>, like <code>bin</code>, <code>include</code>, <code>lib64</code> and <code>share</code>, somewhat similar to your system root.</p><h4 id="compile-install-kdevelop">Compile &amp; Install KDevelop<a class="header-anchor" href="#compile-install-kdevelop"></a></h4><p>cmake makes life easier by its <code>find_package</code> mechanism that automatically find required libraries for you. But sometime you need more control over that.</p><p>What <code>find_package</code> actually does is to find a cmake file provided by the library you required that can configure itself. (read the <a href="https://cmake.org/cmake/help/latest/command/find_package.html">doc</a> if you are interested in the exact detailed procedure). In our case, the files are:</p><pre class="command-line language-bash" style="max-height: 30em" data-user="aetf" data-prismjs-copy-timeout="500" data-output="2-7" tabindex="0"><code id="13b9153e" class="language-bash" data-prism-hydrate="{&quot;element&quot;:&quot;13b9153e&quot;,&quot;language&quot;:&quot;bash&quot;,&quot;code&quot;:&quot;tree ~/stage/lib64/cmake/KDevPlatform\n\n\n\n\n\n&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;numberOfLines&quot;:7,&quot;outputLines&quot;:[null,&quot;~/stage/lib64/cmake/KDevPlatform&quot;,&quot;├── KDevPlatformConfig.cmake&quot;,&quot;├── KDevPlatformConfigVersion.cmake&quot;,&quot;├── KDevPlatformMacros.cmake&quot;,&quot;├── KDevPlatformTargets.cmake&quot;,&quot;└── KDevPlatformTargets-debug.cmake&quot;],&quot;continuationLineIndicies&quot;:{},&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;\u003cspan class=\&quot;token command\&quot;\u003etree ~/stage/lib64/cmake/KDevPlatform</span>\n<span class=\&quot;token output\&quot;>~/stage/lib64/cmake/KDevPlatform</span>\n<span class=\&quot;token output\&quot;>├── KDevPlatformConfig.cmake</span>\n<span class=\&quot;token output\&quot;>├── KDevPlatformConfigVersion.cmake</span>\n<span class=\&quot;token output\&quot;>├── KDevPlatformMacros.cmake</span>\n<span class=\&quot;token output\&quot;>├── KDevPlatformTargets.cmake</span>\n<span class=\&quot;token output\&quot;>└── KDevPlatformTargets-debug.cmake</span>&quot;}"><span class="command-line-prompt"><span data-user="aetf" data-host="localhost"></span><span></span><span></span><span></span><span></span><span></span><span></span></span><span class="token command">tree ~/stage/lib64/cmake/KDevPlatform</span><span class="token output">~/stage/lib64/cmake/KDevPlatform</span><span class="token output">├── KDevPlatformConfig.cmake</span><span class="token output">├── KDevPlatformConfigVersion.cmake</span><span class="token output">├── KDevPlatformMacros.cmake</span><span class="token output">├── KDevPlatformTargets.cmake</span><span class="token output">└── KDevPlatformTargets-debug.cmake</span></code></pre><p>We just need a way to tell cmake where they are by appending that path to <code>CMAKE_PREFIX_PATH</code> when configuring KDevelop.</p><pre class="command-line language-bash" style="max-height: 30em" data-user="aetf" data-prismjs-copy-timeout="500" data-output="3-5" tabindex="0"><code id="7e21f03e" class="language-bash" data-prism-hydrate="{&quot;element&quot;:&quot;7e21f03e&quot;,&quot;language&quot;:&quot;bash&quot;,&quot;code&quot;:&quot;mkdir build \u0026&amp; cd build\ncmake -DCMAKE_PREFIX_PATH=~/stage/lib64/cmake \\\n\n\n\nmake install&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;numberOfLines&quot;:6,&quot;outputLines&quot;:[null,null,&quot;                         -DCMAKE_BUILD_TYPE=Debug \\&quot;,&quot;                         -DCMAKE_INSTALL_PREFIX=~/stage \\&quot;,&quot;                         ..&quot;],&quot;continuationLineIndicies&quot;:{},&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;\u003cspan class=\&quot;token command\&quot;\u003e<span class=\&quot;token function\&quot;>mkdir</span> build <span class=\&quot;token operator\&quot;>&amp;amp;&amp;amp;</span> <span class=\&quot;token builtin class-name\&quot;>cd</span> build</span>\n<span class=\&quot;token command\&quot;>cmake <span class=\&quot;token parameter variable\&quot;>-DCMAKE_PREFIX_PATH</span><span class=\&quot;token operator\&quot;>=~</span>/stage/lib64/cmake <span class=\&quot;token punctuation\&quot;>\\</span></span>\n<span class=\&quot;token output\&quot;>                         -DCMAKE_BUILD_TYPE=Debug \\</span>\n<span class=\&quot;token output\&quot;>                         -DCMAKE_INSTALL_PREFIX=~/stage \\</span>\n<span class=\&quot;token output\&quot;>                         ..</span>\n<span class=\&quot;token command\&quot;><span class=\&quot;token function\&quot;>make</span> <span class=\&quot;token function\&quot;>install</span></span>&quot;}"><span class="command-line-prompt"><span data-user="aetf" data-host="localhost"></span><span data-user="aetf" data-host="localhost"></span><span></span><span></span><span></span><span data-user="aetf" data-host="localhost"></span></span><span class="token command"><span class="token function">mkdir</span> build <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">cd</span> build</span><span class="token command">cmake <span class="token parameter variable">-DCMAKE_PREFIX_PATH</span><span class="token operator">=~</span>/stage/lib64/cmake <span class="token punctuation">\</span></span><span class="token output">                         -DCMAKE_BUILD_TYPE=Debug \</span><span class="token output">                         -DCMAKE_INSTALL_PREFIX=~/stage \</span><span class="token output">                         ..</span><span class="token command"><span class="token function">make</span> <span class="token function">install</span></span></code></pre><p>This way cmake will find your newly built KDevPlatform.</p><p><strong>Hint</strong>: you can locally change KDevPlatform version to a higher number than the one in the system and modify KDevelop to require at least that number. Then you can be sure that you are building against the custom build of KDevPlatform.</p><h4 id="run-newly-built-kdevelop">Run Newly Built KDevelop<a class="header-anchor" href="#run-newly-built-kdevelop"></a></h4><p>In order to run KDevelop built this way, you have to specify various paths so that system can load correct version of dynamic libraries and kdevelop itself can find its data in correct place.</p><pre class="command-line language-bash" style="max-height: 30em" data-user="aetf" data-prismjs-copy-timeout="500" data-output="2-4" tabindex="0"><code id="5f4bd63e" class="language-bash" data-prism-hydrate="{&quot;element&quot;:&quot;5f4bd63e&quot;,&quot;language&quot;:&quot;bash&quot;,&quot;code&quot;:&quot;env QT_PLUGIN_PATH=~/stage/lib64/plugins \\\n\n\n&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;numberOfLines&quot;:4,&quot;outputLines&quot;:[null,&quot;                       LD_LIBRARY_PATH=~/stage/lib64 \\&quot;,&quot;                       XDG_DATA_DIRS=~/stage/share:$XDG_DATA_DIRS \\&quot;,&quot;                       ~/stage/bin/kdevelop&quot;],&quot;continuationLineIndicies&quot;:{},&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;\u003cspan class=\&quot;token command\&quot;\u003e<span class=\&quot;token function\&quot;>env</span> <span class=\&quot;token assign-left variable\&quot;>QT_PLUGIN_PATH</span><span class=\&quot;token operator\&quot;>=~</span>/stage/lib64/plugins <span class=\&quot;token punctuation\&quot;>\\</span></span>\n<span class=\&quot;token output\&quot;>                       LD_LIBRARY_PATH=~/stage/lib64 \\</span>\n<span class=\&quot;token output\&quot;>                       XDG_DATA_DIRS=~/stage/share:$XDG_DATA_DIRS \\</span>\n<span class=\&quot;token output\&quot;>                       ~/stage/bin/kdevelop</span>&quot;}"><span class="command-line-prompt"><span data-user="aetf" data-host="localhost"></span><span></span><span></span><span></span></span><span class="token command"><span class="token function">env</span> <span class="token assign-left variable">QT_PLUGIN_PATH</span><span class="token operator">=~</span>/stage/lib64/plugins <span class="token punctuation">\</span></span><span class="token output">                       LD_LIBRARY_PATH=~/stage/lib64 \</span><span class="token output">                       XDG_DATA_DIRS=~/stage/share:$XDG_DATA_DIRS \</span><span class="token output">                       ~/stage/bin/kdevelop</span></code></pre>]]></content>
    
    
    <summary type="html">
&lt;p&gt;KDevelop is tightly coupled with KDevPlatform and from time to time you need to hack them both when developing. But then without caution, you’ll link against the system bundled KDevPlatform libraries and spend the whole day trying to find out why the hall the code you wrote didn’t have any effects.&lt;/p&gt;
&lt;p&gt;That’s annoying and here’s how to make sure you are linking to the right copy.&lt;/p&gt;
&lt;h4 id=&quot;compile-install-kdevplatform&quot;&gt;Compile &amp;amp; Install KDevPlatform&lt;/h4&gt;
&lt;p&gt;Your awesome super hacked KDevPlatform need to be compiled and installed to somewhere first, say &lt;code&gt;~/stage&lt;/code&gt;. Don’t install it to any standard path like &lt;code&gt;/usr&lt;/code&gt; or &lt;code&gt;/usr/local&lt;/code&gt; just to avoid messing with the rest of the system. As a rule of thumb, if you need sudo privilege when doing &lt;code&gt;make install&lt;/code&gt;, then you probably should consider somewhere else.&lt;/p&gt;
&lt;pre class=&quot;command-line language-bash&quot; style=&quot;max-height: 30em&quot; data-user=&quot;aetf&quot; data-prismjs-copy-timeout=&quot;500&quot; tabindex=&quot;0&quot;&gt;&lt;code id=&quot;57308e3e&quot; class=&quot;language-bash&quot; data-prism-hydrate=&quot;{&amp;quot;element&amp;quot;:&amp;quot;57308e3e&amp;quot;,&amp;quot;language&amp;quot;:&amp;quot;bash&amp;quot;,&amp;quot;code&amp;quot;:&amp;quot;mkdir build &#92;u0026&amp;amp; cd build&#92;ncmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=~/stage ..&#92;nmake install&amp;quot;,&amp;quot;settings&amp;quot;:{},&amp;quot;vars&amp;quot;:{&amp;quot;command-line&amp;quot;:{&amp;quot;numberOfLines&amp;quot;:3,&amp;quot;outputLines&amp;quot;:[],&amp;quot;continuationLineIndicies&amp;quot;:{},&amp;quot;complete&amp;quot;:true}},&amp;quot;highlightedCode&amp;quot;:&amp;quot;&#92;u003cspan class=&#92;&amp;quot;token command&#92;&amp;quot;&#92;u003e&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;mkdir&lt;/span&gt; build &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&amp;amp;amp;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token builtin class-name&#92;&amp;quot;&gt;cd&lt;/span&gt; build&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token command&#92;&amp;quot;&gt;cmake &lt;span class=&#92;&amp;quot;token parameter variable&#92;&amp;quot;&gt;-DCMAKE_BUILD_TYPE&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt;Debug &lt;span class=&#92;&amp;quot;token parameter variable&#92;&amp;quot;&gt;-DCMAKE_INSTALL_PREFIX&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=~&lt;/span&gt;/stage &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;..&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token command&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;make&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;install&lt;/span&gt;&lt;/span&gt;&amp;quot;}&quot;&gt;&lt;span class=&quot;command-line-prompt&quot;&gt;&lt;span data-user=&quot;aetf&quot; data-host=&quot;localhost&quot;&gt;&lt;/span&gt;&lt;span data-user=&quot;aetf&quot; data-host=&quot;localhost&quot;&gt;&lt;/span&gt;&lt;span data-user=&quot;aetf&quot; data-host=&quot;localhost&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token function&quot;&gt;mkdir&lt;/span&gt; build &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; build&lt;/span&gt;
&lt;span class=&quot;token command&quot;&gt;cmake &lt;span class=&quot;token parameter variable&quot;&gt;-DCMAKE_BUILD_TYPE&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;Debug &lt;span class=&quot;token parameter variable&quot;&gt;-DCMAKE_INSTALL_PREFIX&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=~&lt;/span&gt;/stage &lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token command&quot;&gt;&lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</summary>
    
    
    
    
    <category term="c++" scheme="https://unlimited-code.works/tags/c/"/>
    
    <category term="KDE" scheme="https://unlimited-code.works/tags/kde/"/>
    
    <category term="KDevelop" scheme="https://unlimited-code.works/tags/kdevelop/"/>
    
    <category term="OpenSource" scheme="https://unlimited-code.works/tags/opensource/"/>
    
    <category term="cmake" scheme="https://unlimited-code.works/tags/cmake/"/>
    
  </entry>
  
  <entry>
    <title>GSoC 2016: Current Status of LLDB Plugin for KDevelop</title>
    <link href="https://unlimited-code.works/blog/2016/08/03/gsoc-kdevelop-lldb-status/"/>
    <id>https://unlimited-code.works/blog/2016/08/03/gsoc-kdevelop-lldb-status/</id>
    <published>2016-08-03T19:04:49.000Z</published>
    <updated>2017-01-07T08:47:58.000Z</updated>
    
    <content type="html"><![CDATA[<div class="note info"><p>2017.1.6:Some of the bugs are fixed, see <a href="https://reviews.llvm.org/D24711">here</a></p></div><div class="note info"><p>2016.9.2: Update known issues and upstream bugs</p></div><div class="note info"><p>2016.8.22: Update known issues</p></div><div class="note info"><p>2016.8.14: Update feature matrix and known issues</p></div><p>After several months’ working, LLDB plugin is now usable for basic debugging use cases. There are less than two weeks left, and it’s time to do a overall status update for the LLDB plugin.</p><h3 id="config-page">Config Page<a class="header-anchor" href="#config-page"></a></h3><p>Using LLDB as the debugger backend is as easy as using the good old GDB debugger. Simply selecting <code>LLDB</code> in the combox at the top-right corner when editing the debug launch configuration should get things work in most normal cases.</p><p><img data-zoom-src="/assets/img/huge_gsoc-kdevelop-lldb-status-lldbconfigpage.png" data-src="/assets/img/body_gsoc-kdevelop-lldb-status-lldbconfigpage.png" alt="LLDB Config Page" title="LLDB Config Page" /></p><p>Additionally, you can set <code>Debugger Executable</code> pointing to a specific version of <code>LLDB</code>. Note that this path should point to the <code>lldb-mi</code> executable, which is usually in the same folder as the normal <code>lldb</code> executable. Should you need any special configuration, <code>Arguments</code> and <code>Environment</code> let you fine tune the running environmnet of <code>LLDB</code>.</p><p>For common options, <code>Config script</code> lets you execute almost any command right after the debugger starts up. <code>Break on start</code> and <code>Start debugger with</code> (the same as <code>GDB</code>) options also come in handy.</p><p>The remote debugging part has been reworked and is largely simplified compared to the <code>GDB</code> one. You only need to start the remote debugging server (<code>lldb-server gdbserver</code>) and set hostname and port in the config page along with a writable folder on the remote machine. KDevelop will take care of uploading and starting your program.</p><h3 id="debugging">Debugging<a class="header-anchor" href="#debugging"></a></h3><p>After started the debug session, you will be taken to the familiar KDevelop debug mode, with similar tool views available, backed by <code>LLDB</code>.</p><p>Variables and Framestack tool views should work as expected. In case you need to execute some complex command directly in <code>LLDB</code>, there’s the reworked Debugger Console.</p><p><img data-zoom-src="/assets/img/huge_gsoc-kdevelop-lldb-status-debugging.png" data-src="/assets/img/body_gsoc-kdevelop-lldb-status-debugging.png" alt="Debug Session using LLDB" title="Debug Session using LLDB" /></p><p>!!! info “Tips”There’s a “repeat” mode in the Debugger Console. If you check the small button left to the command edit, you can press enter directly to repeat the last command.</p><h2 id="feature-implementation-status">Feature Implementation Status<a class="header-anchor" href="#feature-implementation-status"></a></h2><table><thead><tr><th style="text-align:center">Feature</th><th style="text-align:center">Working</th><th style="text-align:center">Note</th></tr></thead><tbody><tr><td style="text-align:center">Execution control</td><td style="text-align:center">Yes</td><td style="text-align:center">-</td></tr><tr><td style="text-align:center">Break points</td><td style="text-align:center">Partial</td><td style="text-align:center">With caveats, see <a href="#known-issues">Known Issues</a></td></tr><tr><td style="text-align:center">Frame stack list</td><td style="text-align:center">Yes</td><td style="text-align:center">-</td></tr><tr><td style="text-align:center">Symbol info when hover</td><td style="text-align:center">Yes</td><td style="text-align:center">-</td></tr><tr><td style="text-align:center">Variables &amp; Expressions</td><td style="text-align:center">Yes</td><td style="text-align:center">see <a href="#known-issues">Known Issues</a></td></tr><tr><td style="text-align:center">Pretty Printer &amp; Unicode</td><td style="text-align:center">Yes</td><td style="text-align:center">-</td></tr><tr><td style="text-align:center">Multi-threaded debugee</td><td style="text-align:center">Yes</td><td style="text-align:center">With <code>LLDB</code> latest trunk version, (svn265858, at the time of writting)</td></tr><tr><td style="text-align:center">Debugger console</td><td style="text-align:center">Yes</td><td style="text-align:center">See <a href="#known-issues">Known Issues</a></td></tr><tr><td style="text-align:center">Remote debugging</td><td style="text-align:center">Yes</td><td style="text-align:center">Only tested on localhost, see <a href="#known-issues">Known Issues</a></td></tr><tr><td style="text-align:center">Disassembly/Register view</td><td style="text-align:center">No</td><td style="text-align:center">Missing necessary command in <code>lldb-mi</code>: <a href="https://llvm.org/bugs/show_bug.cgi?id=28718" title="LLDB-MI: disassembly-flavor not supported by gdb-set and gdb-show">Bug 28718</a>, <a href="https://llvm.org/bugs/show_bug.cgi?id=28859" title="LLDB-MI: data-disassemble command doesn't accept &quot;$pc&quot; as start and end address parameter">Bug 28859</a></td></tr><tr><td style="text-align:center">Memory view</td><td style="text-align:center">No</td><td style="text-align:center">-</td></tr><tr><td style="text-align:center">Watch points</td><td style="text-align:center">No</td><td style="text-align:center">-</td></tr><tr><td style="text-align:center">Attach to process</td><td style="text-align:center">No</td><td style="text-align:center">Due to <a href="https://llvm.org/bugs/show_bug.cgi?id=28858" title="LLDB-MI: no notification about process stopped if attaching to a process">Bug 28858</a></td></tr><tr><td style="text-align:center">Examine core file</td><td style="text-align:center">No</td><td style="text-align:center">Implemented, not accessible from UI, not tested yet</td></tr><tr><td style="text-align:center">Drkonqi support</td><td style="text-align:center">No</td><td style="text-align:center">Implemented, not tested yet</td></tr></tbody></table><h3 id="known-issues">Known Issues<a class="header-anchor" href="#known-issues"></a></h3><ul><li>Debugger console<ul><li>Debugger CLI stdout isn’t shown, due to <a href="https://llvm.org/bugs/show_bug.cgi?id=28026" title="LLDB-MI doesn't properly output CLI command response using console-stream-output stream">Bug 28026</a></li></ul></li><li>Remote debugging<ul><li>When using <code>lldb-server gdbserver</code> as remote server, server exits once debug session ended.</li><li>When using <code>gdbserver</code> as remote server<ul><li>Remote work path can’t contain space</li><li>Can’t actually start inferior</li></ul></li></ul></li><li>Variables view<ul><li><del>Variables and expression won’t get updated when their values change, possibly due to <code>lldb-mi</code> doesn’t report them in the <code>changelist</code> result.</del></li><li>Variables may not be updated when jumping between frames and threads, due to <a href="https://llvm.org/bugs/show_bug.cgi?id=28621" title="lldb-mi can't get variables of a frame (-stack-list-* MI-commands) if the thread didn't cause the stop event">Bug 28621</a></li></ul></li><li>Breakpoints<ul><li>Pending breakpoints doesn’t work (<a href="https://llvm.org/bugs/show_bug.cgi?id=28702" title="LLDB-MI: pending break point set with command break-insert -f doesn't get resolved">Bug 28702</a>, <a href="https://llvm.org/bugs/show_bug.cgi?id=28703" title="LLDB-MI: break-insert command flag -d (disabled) has no effect when combined with -f (pending)">Bug 28703</a>), as well as anything relies on it, i.e. ~break on start~ (break on start is fixed to work even without pending breakpoint support) .<ul><li>Can still manually set pending breakpoints</li></ul></li><li>Breakpoint hit count is not updated timely (<a href="https://llvm.org/bugs/show_bug.cgi?id=28860" title="LLDB-MI: no breakpoint-modified notification when a breakpoint is hit">Bug 28860</a>)</li><li>No watchpoint support<ul><li>Can still manually add watch point</li></ul></li></ul></li><li>Changing working directory has no effect (<a href="https://llvm.org/bugs/show_bug.cgi?id=30265" title="LLDB-MI: environment-cd doesn't change working directory for inferior">Bug 30265</a>)</li></ul><h3 id="upstream-bugs">Upstream Bugs<a class="header-anchor" href="#upstream-bugs"></a></h3><p>Actually most non-working issues are due to some kind of upstream bugs in <code>lldb-mi</code>. There’s a <code>debugers/lldb/TODO.txt</code> in the repo which contains more detailed description of current limitations and link to related LLDB bug reports. But here’s a quick list of opening bugs.</p><p>Some of these bugs already have patch available, so be sure to check out their bugzilla page.</p><ul><li><a href="https://llvm.org/bugs/show_bug.cgi?id=25000" title="lldb-mi does not receive broadcasted notification from Core/Process about process stopped if StopAtEntry was requested (&quot;process launch -s&quot; OR &quot;-exec-run --start&quot;)">Bug 25000</a> - lldb-mi does not receive broadcasted notification from Core/Process about process stopped if StopAtEntry was requested (“process launch -s” OR “-exec-run --start”)</li><li><del><a href="https://llvm.org/bugs/show_bug.cgi?id=28026" title="LLDB-MI doesn't properly output CLI command response using console-stream-output stream">Bug 28026</a> - LLDB-MI doesn’t properly output CLI command response using console-stream-output stream</del></li><li><a href="https://llvm.org/bugs/show_bug.cgi?id=28621" title="lldb-mi can't get variables of a frame (-stack-list-* MI-commands) if the thread didn't cause the stop event">Bug 28621</a> - lldb-mi can’t get variables of a frame (-stack-list-* MI-commands) if the thread didn’t cause the stop event</li><li><a href="https://llvm.org/bugs/show_bug.cgi?id=28698" title="[lldb-mi] -break-insert with -f (pending flag) requires additional parameter">Bug 28698</a> - [lldb-mi] -break-insert with -f (pending flag) requires additional parameter</li><li><a href="https://llvm.org/bugs/show_bug.cgi?id=28702" title="LLDB-MI: pending break point set with command break-insert -f doesn't get resolved">Bug 28702</a> - LLDB-MI: pending break point set with command break-insert -f doesn’t get resolved</li><li><a href="https://llvm.org/bugs/show_bug.cgi?id=28703" title="LLDB-MI: break-insert command flag -d (disabled) has no effect when combined with -f (pending)">Bug 28703</a> - LLDB-MI: break-insert command flag -d (disabled) has no effect when combined with -f (pending)</li><li><del><a href="https://llvm.org/bugs/show_bug.cgi?id=28718" title="LLDB-MI: disassembly-flavor not supported by gdb-set and gdb-show">Bug 28718</a> - LLDB-MI: disassembly-flavor not supported by gdb-set and gdb-show</del></li><li><a href="https://llvm.org/bugs/show_bug.cgi?id=28857" title="LLDB-MI: break-enable doesn't enable specified breakpoints">Bug 28857</a> - LLDB-MI: break-enable doesn’t enable specified breakpoints</li><li><a href="https://llvm.org/bugs/show_bug.cgi?id=28858" title="LLDB-MI: no notification about process stopped if attaching to a process">Bug 28858</a> - LLDB-MI: no notification about process stopped if attaching to a process</li><li><a href="https://llvm.org/bugs/show_bug.cgi?id=28859" title="LLDB-MI: data-disassemble command doesn't accept &quot;$pc&quot; as start and end address parameter">Bug 28859</a> - LLDB-MI: data-disassemble command doesn’t accept “$pc” as start and end address parameter</li><li><a href="https://llvm.org/bugs/show_bug.cgi?id=28860" title="LLDB-MI: no breakpoint-modified notification when a breakpoint is hit">Bug 28860</a> - LLDB-MI: no breakpoint-modified notification when a breakpoint is hit</li><li><del><a href="https://llvm.org/bugs/show_bug.cgi?id=30265" title="LLDB-MI: environment-cd doesn't change working directory for inferior">Bug 30265</a> -  LLDB-MI: environment-cd doesn’t change working directory for inferior</del></li></ul>]]></content>
    
    
    <summary type="html">



&lt;p&gt;After several months’ working, LLDB plugin is now usable for basic debugging use cases. There are less than two weeks left, and it’s time to do a overall status update for the LLDB plugin.&lt;/p&gt;
&lt;h3 id=&quot;config-page&quot;&gt;Config Page&lt;/h3&gt;
&lt;p&gt;Using LLDB as the debugger backend is as easy as using the good old GDB debugger. Simply selecting &lt;code&gt;LLDB&lt;/code&gt; in the combox at the top-right corner when editing the debug launch configuration should get things work in most normal cases.&lt;/p&gt;
&lt;p&gt;&lt;img data-zoom-src=&quot;/assets/img/huge_gsoc-kdevelop-lldb-status-lldbconfigpage.png&quot; data-src=&quot;/assets/img/body_gsoc-kdevelop-lldb-status-lldbconfigpage.png&quot; alt=&quot;LLDB Config Page&quot; title=&quot;LLDB Config Page&quot;&gt;&lt;/p&gt;
&lt;p&gt;Additionally, you can set &lt;code&gt;Debugger Executable&lt;/code&gt; pointing to a specific version of &lt;code&gt;LLDB&lt;/code&gt;. Note that this path should point to the &lt;code&gt;lldb-mi&lt;/code&gt; executable, which is usually in the same folder as the normal &lt;code&gt;lldb&lt;/code&gt; executable. Should you need any special configuration, &lt;code&gt;Arguments&lt;/code&gt; and &lt;code&gt;Environment&lt;/code&gt; let you fine tune the running environmnet of &lt;code&gt;LLDB&lt;/code&gt;.&lt;/p&gt;</summary>
    
    
    
    
    <category term="c++" scheme="https://unlimited-code.works/tags/c/"/>
    
    <category term="KDE" scheme="https://unlimited-code.works/tags/kde/"/>
    
    <category term="KDevelop" scheme="https://unlimited-code.works/tags/kdevelop/"/>
    
    <category term="OpenSource" scheme="https://unlimited-code.works/tags/opensource/"/>
    
    <category term="GSoC2016" scheme="https://unlimited-code.works/tags/gsoc2016/"/>
    
    <category term="LLDB" scheme="https://unlimited-code.works/tags/lldb/"/>
    
  </entry>
  
  <entry>
    <title>GSoC 2016: Mid-term Evaluation</title>
    <link href="https://unlimited-code.works/blog/2016/06/29/gsoc-midterm-evaluation/"/>
    <id>https://unlimited-code.works/blog/2016/06/29/gsoc-midterm-evaluation/</id>
    <published>2016-06-29T23:27:42.000Z</published>
    <updated>2016-12-15T12:22:09.000Z</updated>
    
    <content type="html"><![CDATA[<p>Time ticks away really fast if you keep yourself busy. I always thought thereare planty of time for GSoC, but now half of it has already passed. With my university research, I’m actually more occupied and productive than I was in the last semester :P</p><h2 id="code-and-more-code">Code, and more code<a class="header-anchor" href="#code-and-more-code"></a></h2><p>Lots of code, that’s what GSoC means, at least in my opinion. That’s exactly something I love. From time to time, I just feel like writing some code, for a somewhat big project, for something useful.</p><p>So that I can dig into the large code base, figuring out the relationships among classes, and then learn about the differences between the current design and the one I would architect, were I making the decision. This is definitely something I’m eager to experience.</p><p>In addition, the version history itself would tell good stories. Tracking down one particular file and seeing it evolves over the years, you’ll be surprised to find out that the code isn’t static anymore and there’re others’ efforts behind the scene continuously improving it, especially when reading through commit logs.</p><p>That’s the amazing feeling GSoC gives me, plus the additional benefit to contribute to the open source community.</p><h2 id="community-and-more-communication">Community, and more communication<a class="header-anchor" href="#community-and-more-communication"></a></h2><p>While I did submit a few patches to open source projects previously, I never deeply involved in any related communities, just floated around and feeling afraid of talking to others. With GSoC, one is forced to interact with the community and get more involved. The best part of this is that I don’t fear talking to the public anymore, and only then did I meet many nice people.</p><p>My mentor Aleix has been so patient and kindly reviewed my sometimes large RR. When my commit broke the master branch, René and Kevin helped me debug and fix the issue. Big thanks to all of you!</p><p>Only when you are actually participate in the workflow, could you begin to know how it’s different from what you have learnt from textbook. The way working with the community is really a valuable experience for my study and work.</p><p>The most challenging part of communicating with others is that, as a non-native English speaker, it takes time to be familiar with and accustomed to various conventions used in communication, like mailing list, IRC and review boards. And I have to double check every time to make sure I’m using appropriate words and being polite. However, this is also a great practice for me to learn English. After all, you can only learn a language by using it.</p><h2 id="test-with-more-coverage">Test, with more coverage<a class="header-anchor" href="#test-with-more-coverage"></a></h2><p>Enough words about non technical things. I really had a hard time coming up this many words. Let’s talk about something <em>technical</em>.</p><p>Unit testing, this is what I’m doing for a week or so. The basic infrastructure for lldb plugin was finished a few weeks ago, and I’m in a stage fixing various failing parts due to lldb-mi not conforming to the specification. There are some commands not implemented, and some others incorrectly implemented. I have to find ways to workaround these before it’s in a good shape to have a UI, not too far away though.</p><p>There are about two months left as the second-half of summer. And it’s good to know I’m not running late too much behind my initial schedule XD. Will keep working anyway. Let’s enjoy the summer and coding!</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Time ticks away really fast if you keep yourself busy. I always thought there
are planty of time for GSoC, but now half of it has already passed. With my university research, I’m actually more occupied and productive than I was in the last semester :P&lt;/p&gt;
&lt;h2 id=&quot;code-and-more-code&quot;&gt;Code, and more code&lt;/h2&gt;
&lt;p&gt;Lots of code, that’s what GSoC means, at least in my opinion. That’s exactly something I love. From time to time, I just feel like writing some code, for a somewhat big project, for something useful.&lt;/p&gt;
&lt;p&gt;So that I can dig into the large code base, figuring out the relationships among classes, and then learn about the differences between the current design and the one I would architect, were I making the decision. This is definitely something I’m eager to experience.&lt;/p&gt;
&lt;p&gt;In addition, the version history itself would tell good stories. Tracking down one particular file and seeing it evolves over the years, you’ll be surprised to find out that the code isn’t static anymore and there’re others’ efforts behind the scene continuously improving it, especially when reading through commit logs.&lt;/p&gt;</summary>
    
    
    
    
    <category term="KDE" scheme="https://unlimited-code.works/tags/kde/"/>
    
    <category term="OpenSource" scheme="https://unlimited-code.works/tags/opensource/"/>
    
    <category term="GSoC2016" scheme="https://unlimited-code.works/tags/gsoc2016/"/>
    
  </entry>
  
  <entry>
    <title>GSoC 2016: Communicating with LLDB</title>
    <link href="https://unlimited-code.works/blog/2016/05/17/gsoc-communicating-with-lldb/"/>
    <id>https://unlimited-code.works/blog/2016/05/17/gsoc-communicating-with-lldb/</id>
    <published>2016-05-17T16:17:38.000Z</published>
    <updated>2016-08-03T19:04:49.000Z</updated>
    
    <content type="html"><![CDATA[<p>It has been a few weeks since the announcement of accepted projects. And I’ve been working on finding the most suitable solution to communicate with LLDB in KDevelop. In this article, I’d first give various choices to talk to LLDB, then evaluate these methods based on the current KDevelop debugger support and finally conclude with my final decision about which way to go.</p><h3 id="available-communication-methods">Available communication methods<a class="header-anchor" href="#available-communication-methods"></a></h3><p>As mentioned in my <a href="/blog/2016/04/22/gsoc-kdevelop-lldb-support/" title="proposal">proposal</a>, there are mainly three ways to talk to LLDB in a debug session.</p><ul><li>Use <a href="https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI.html#GDB_002fMI">GDB Machine Interface</a><ul><li>LLDB-MI implementation which exists in LLDB source tree</li><li>LLDBMI2, which is a third party implementation that has a simpler and smaller code base</li></ul></li><li>Use C++ interface directly</li></ul><p>Yes, I meant the <em>GDB</em> Machine Interface, and here’s a little background.</p><blockquote><p>MI is a line-based machine-oriented text interface to a debugger. The Gnu GDB debugger offers a reference implementation of MI emission. The MI interface is quickly becoming a de facto standard for integrating debuggers into a variety of environments.  <em>(From Debugger Machine Interface Wiki)</em></p></blockquote><p>Being said that, the design decision about how we talk to LLDB is critical that affects the stability, maintainability and extensibility of the KDevelop debugger support. Thus it deserves careful assessment about the advantages and disadvantages.</p><h3 id="advantages-and-disadvantages">Advantages and disadvantages<a class="header-anchor" href="#advantages-and-disadvantages"></a></h3><p>Currently, KDevelop is using the MI to talk to GDB to provide debugging support in IDE. So using the same MI method talking to LLDB has the advantage of large percentage of code reusing.</p><p>On the other hand, Neither choices (LLDB-MI, LLDBMI2) is a comprehensive nor complete implementation, which might lead to difficulties if we must use something not yet implemented.</p><p>Linking directly to the C++ API avoids this problem completely, as it is the official API supported from the beginning. The drawback of direct linking is also non-negligible, however, as we can’t easily protect ourselves from debugger crashes. This can be a problem, because one reason we are debugging a program is to find why it crashes, and it’s not rare to see the debugee also turns the debugger into a unstable state.</p><p>The following table summarizes the pros and cons of each choices.</p><table><thead><tr><th style="text-align:center">Method</th><th style="text-align:center">Advantages</th><th style="text-align:center">Disadvantages</th></tr></thead><tbody><tr><td style="text-align:center">C++ API</td><td style="text-align:center">Official support, Feature complete</td><td style="text-align:center">Can’t reuse code with GDB, Debugger crash also crashes the IDE</td></tr><tr><td style="text-align:center">LLDB-MI</td><td style="text-align:center">Official support, Code reuse with GDB</td><td style="text-align:center">Feature incomplete, only support remote debugging</td></tr><tr><td style="text-align:center">LLDBMI2</td><td style="text-align:center">Actively developed</td><td style="text-align:center">Only works on OSX, only support local debugging</td></tr></tbody></table><p>Let’s talk about each of these. For the C++ API, it’s the most promising one if we can somehow figure out how to do crash protection. The problem with that is, the most reliable way to protect ourselves is to move the library out-of-process. That is exactly what the Machine Interface does, and I don’t feel like reinventing the wheel.</p><p>The biggest issue with LLDB-MI is that only basic MI commands are implemented. However, the MI specification accepts arbitrary normal user commands to address this problem and fortunately LLDB-MI supports this feature. Except for the incomplete feature, LLDB-MI only supports remote debugging. For those not familiar with remote debugging,</p><blockquote><p>Remote debugging refers to the act of debugging a process which is running on a different system, than the debugger itself. We shall refer to the system running the debugger as the local system, while the system running the debugged process will be the remote system.  <em>(From <a href="http://lldb.llvm.org/remote.html">Remote debugging with LLDB</a>)</em></p></blockquote><p>While this sounds like a serious problem, it isn’t. Because <strong>LLDB on Linux and OSX uses the remote debugging stub even when debugging a process locally</strong>.The support for Windows is unclear though. And I don’t know whether it’s easy or not to launch a remote debugging session on Windows.</p><p>The actively developed LLDBMI2 is a third party implementation of the MI specification, while it seems promising, the hard limitation of only support OSX makes it not suitable for a cross-platform IDE like KDevelop.</p><h3 id="final-decision">Final decision<a class="header-anchor" href="#final-decision"></a></h3><p>All these three methods talking to LLDB have their own pros and cons. However the LLDB-MI implementation seems providing most benefits while there are solutions to its short comes. Thus I’ll go with the LLDB-MI. As this blog is written, I already have a preliminary implementation of LLDB-MI parser, which shares a large portion of code with the existing GDB/MI parser. There are issues though, as the LLDB-MI doesn’t correctly output debugger output using stream. But I’m working on it and should be able to solve these later.</p><p>That all about it. I’ll keep you posted once I have something working and see you next time!</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;It has been a few weeks since the announcement of accepted projects. And I’ve been working on finding the most suitable solution to communicate with LLDB in KDevelop. In this article, I’d first give various choices to talk to LLDB, then evaluate these methods based on the current KDevelop debugger support and finally conclude with my final decision about which way to go.&lt;/p&gt;
&lt;h3 id=&quot;available-communication-methods&quot;&gt;Available communication methods&lt;/h3&gt;
&lt;p&gt;As mentioned in my &lt;a href=&quot;/blog/2016/04/22/gsoc-kdevelop-lldb-support/&quot; title=&quot;proposal&quot;&gt;proposal&lt;/a&gt;, there are mainly three ways to talk to LLDB in a debug session.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;a href=&quot;https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI.html#GDB_002fMI&quot;&gt;GDB Machine Interface&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;LLDB-MI implementation which exists in LLDB source tree&lt;/li&gt;
&lt;li&gt;LLDBMI2, which is a third party implementation that has a simpler and smaller code base&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Use C++ interface directly&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yes, I meant the &lt;em&gt;GDB&lt;/em&gt; Machine Interface, and here’s a little background.&lt;/p&gt;</summary>
    
    
    
    
    <category term="c++" scheme="https://unlimited-code.works/tags/c/"/>
    
    <category term="KDE" scheme="https://unlimited-code.works/tags/kde/"/>
    
    <category term="KDevelop" scheme="https://unlimited-code.works/tags/kdevelop/"/>
    
    <category term="OpenSource" scheme="https://unlimited-code.works/tags/opensource/"/>
    
    <category term="GSoC2016" scheme="https://unlimited-code.works/tags/gsoc2016/"/>
    
    <category term="LLDB" scheme="https://unlimited-code.works/tags/lldb/"/>
    
  </entry>
  
  <entry>
    <title>GSoC 2016: LLDB Support for KDevelop</title>
    <link href="https://unlimited-code.works/blog/2016/04/22/gsoc-kdevelop-lldb-support/"/>
    <id>https://unlimited-code.works/blog/2016/04/22/gsoc-kdevelop-lldb-support/</id>
    <published>2016-04-23T06:07:21.000Z</published>
    <updated>2016-12-15T14:51:47.000Z</updated>
    
    <content type="html"><![CDATA[<p>I’ve always wanted to participate in the <a href="http://summerofcode.withgoogle.com/">Google Code of Summer</a>. It’s cool and an super legitimate experience to put on CV, isn’t it? Anyway, what’s more exciting is that my first time proposal was accepted!</p><p>So I think it might be a good chance to also post this on the blog, which may probably keeps me writing more things and make the blog more… I mean, make it less like unmaintained XD</p><p>The big plan is, writing a series of articles as the project goes on and making them kind of status updates. Let see how far I can go though :P</p><h2 id="introduction">Introduction<a class="header-anchor" href="#introduction"></a></h2><p>Enabling KDevelop to use LLDB as a debugging backend, which would be especially useful on Max OS X and Windows, where gdb support is rather scarce, and it can also help people that want to switch to lldb on linux (like me!) by adding decent IDE support.</p><h2 id="project-goals">Project Goals<a class="header-anchor" href="#project-goals"></a></h2><p>LLDB support in similar feature-completeness as current GDB support. The user should be able to select what debugger to use intuitively on a per launch configuration base. The following function should be supported.</p><ul><li>Debug session management: begin, kill, restart</li><li>Set breakpoints<ul><li>breakpoint list</li><li>enable/disable breakpoints</li><li>conditional breakpoints</li></ul></li><li>Information inspection<ul><li>Frame Stack: threads, call stack</li><li>Local variables</li><li>Symbol info when hovering mouse over the symbol</li><li>Disassembler</li><li>Register</li></ul></li><li>Debug commands: next, step, jump, run to the end of function, arbitrary lldb command</li><li>Attach to a running process</li><li>Examine core file</li><li>Remote debug</li><li>Drkonqi support</li></ul><h2 id="implementation">Implementation<a class="header-anchor" href="#implementation"></a></h2><p>The whole work can be broken down to three major parts.</p><ul><li><strong>Communication with LLDB</strong>: Implement a wrapper class that hides all hassles communicating with LLDB and provide a consistent api that is agnostic to specific communication methods, be it inter-processes or direct library link.</li><li><strong>LLDB Specific Classes</strong>: Implementation of LLDB specific controllers and manager classes. This includes <code>DebugSession</code> and friends, <code>*Controller</code> classes and config page factories. This part is higher level than the first one, but still remains LLDB specific, thus must be implemented separately from GDB variants.</li><li><strong>UI and Other</strong>: Hook the UI with the LLDB backend built from the above two parts. This part has the potential to share a large amount of code with GDB. However, currently all UI widgets are bounded to GDB backend. Thus refactors on these classes are needed to split common code out.</li></ul><h3 id="relation-with-current-gdb-plugin">Relation with current GDB Plugin<a class="header-anchor" href="#relation-with-current-gdb-plugin"></a></h3><p>Right now the debugger code in kdevplatform only provides very basic facilities to build a debug plugin. Most heavey works are still done in <code>GDBDebugger::CppDebuggerPlugin</code>. An investigation into the code shows that there are planty part of code that is debugger backend agnostic, and could be reused by LLDB plugin.</p><p>The ideal/desired design would be extract all debugger backend agnostic into kdevplatform and let GDB and LLDB plugin built on top of that. But we risk breaking the existing GDB plugin which already does a good job. Therefore, I plan to first focus on implementation of LLDB plugin with a copy of all needed classes in kdevplatform, and only after the LLDB plugin reaches a rather mature state, shall we begin port GDB to use the new infrastructure.</p><h3 id="communication-with-lldb">Communication with LLDB<a class="header-anchor" href="#communication-with-lldb"></a></h3><p>This can be done by expose a interface class with all available lldb commands and internally delegate the command execution to one of the LLDB interface mentioned below. Other parts of the LLDB debugger plugin will rely solely on the interface class to post lldb commands/jobs. This design is similar to what is used in <code>GDBDebugger::CppDebuggerPlugin</code>. This is the foundation of all other parts of the plugin, so I plan to make this part solid by my best effect before moving on to the next part.</p><h4 id="possible-lldb-interface-to-use">Possible LLDB Interface to Use<a class="header-anchor" href="#possible-lldb-interface-to-use"></a></h4><p>LLDB released LLDB-MI on 2014, and there is another project LLDBMI2 that does the same thing. Along with those, there is the good old C++ API. Further investigation and evaluation is needed to finally determine on which one to use. Here just list a brief description of each choise.</p><ul><li><a href="https://www.codeplay.com/portal/lldb-mi-driver---part-1-introduction">LLDB-MI</a><ul><li>Included in the LLDB source code, which means better support</li><li>A good separation of input/factory/output</li><li>Seems only support remote debugging</li><li>Limited command implemented at the time of the blog written (might have been changed since then)</li></ul></li><li><a href="https://github.com/freedib/lldbmi2">LLDBMI2</a><ul><li>Seems to be a simple MI interface to LLDB, which is more lightweight than LLDB-MI</li><li>Not official but actively maintained</li><li>Only support local debugging and only support Mac OS X</li></ul></li><li><a href="https://lldb.llvm.org/cpp_reference/index.html">C++ API</a><ul><li>Directly link to LLDB, which should be fast and the API is mature</li><li>Must find a way to protect ourselves from debugger crashes</li><li>Write from scratch, can’t reuse MI code for GDB</li></ul></li></ul><h3 id="implement-lldb-specific-classes">Implement LLDB Specific Classes<a class="header-anchor" href="#implement-lldb-specific-classes"></a></h3><p>These classes is higher level than the above, and is the major classes that teach KDevelop how to use LLDB to debug.</p><p><code>IDebugSession</code> represents a specific debug session with a debugger of some type. Currently GDBDebugger provides an implementation <code>DebugSession</code>, but it contains GDB specific code. The same applies to other classes such as <code>BreakpointController</code> and <code>FrameStackModel</code>.</p><p>LLDB of course should be configured differently than GDB. Currently, the user can tune various options for GDB in the launcher configuration page. This should be extended to let the user change the debugger used for a particular debug launcher and configure separately.</p><p>Here is a brief list of related classes</p><ul><li>DebugSession<ul><li>BreakpointController</li><li>VariableController</li><li>FrameStackModel</li></ul></li><li>ConfigPageFactory</li><li>Launcher and jobs<ul><li>DebugJob</li></ul></li></ul><h3 id="move-non-gdb-specific-classes-to-kdevplatform">Move non GDB Specific Classes to KDevPlatform<a class="header-anchor" href="#move-non-gdb-specific-classes-to-kdevplatform"></a></h3><p>As said above, the GDBDebugger plugin contains many non GDB specific code. Rather than rewrite the same thing for LLDB debugger plugin, I plan to reuse these code as much as possible. This includes UI widgets for different tool views, context menu items and dialogs. Drkonqi and the glue code between user action and <code>IDebugSession</code> methods are other parts that can be potentially reused.</p><ul><li>UI<ul><li>ToolViews<ul><li>RegisterView</li><li>DisassembleWidget</li><li>GDBOutputWidget</li><li>MemoryViewDlg</li></ul></li><li>Context Menu</li><li>Dialogs<ul><li>DebugTracingDialog</li><li>SelectCoreDialog</li><li>ProcessSelection</li></ul></li></ul></li><li>Drkonqi</li><li>DebugSession management</li></ul><h3 id="pretteyprinters">PretteyPrinters<a class="header-anchor" href="#pretteyprinters"></a></h3><p>These scripts are used to make C++/STL and Qt objects easier for the user to read. Currently I’m not sure if they are still needed for LLDB. If so, this might need to be ported to LLDB data formatters.</p><h3 id="tests">Tests<a class="header-anchor" href="#tests"></a></h3><p>The importance of tests can never be over emphasized. I’m going to start with the same unit tests as GDB when applicable and add other tests when find problems during the implementation.</p><h2 id="timeline">Timeline<a class="header-anchor" href="#timeline"></a></h2><h3 id="milestones">Milestones<a class="header-anchor" href="#milestones"></a></h3><ul><li><strong>April 22</strong> (2 weeks): If accepted, I will start by contributing little bug fixes to KDevelop to get familiar with the code base. Besides that, the most work for this period will be investigating and playing with different ways to talk with lldb. It is important to have this period before actually starting coding, as the decision of which LLDB interface to use would affect the overall stability and quality of the plugin, and it deserves some careful thought.</li><li><strong>May 6</strong> (3.5 weeks): Around this time, I should have done some demos on talking to LLDB. Use this experience gained from previous weeks, I will start actually build the communication infrastructure with LLDB. This could be a totally rewrite from stratch or an extension of the previous demo depends on what method I choose.</li><li><strong>May 31</strong> (3 weeks): We should have a final communication infrastructure with LLDB (part 1) now. And based on that, I can start implement most of the important controllers and managers for the plugin, including <code>IPlugin</code>, <code>IDebugSession</code> and friends.</li><li><strong>June 21</strong> (4 weeks): Most of the important controllers and mangers (part 2) should have been implemented at this time. Although they may still contain stub methods which are related to UI setups and Drkonqi. I give this period the longest time because in my opinion, it is the UI that actually talks to users, and any small bug in it will frustrate them. Thus I not only need to implement them, but also polish them to some extent.</li><li><strong>July 19</strong> (4 weeks): The whole plugin should work for simple use cases by then. And the last 4 weeks are used to revise and finialize the code to fix any remaining bugs as well as move non GDB specific classes into kdevplatform.git. This period also serves as a buffer as we are always optimistic in estimating works and it always turns out to take longer!</li><li><strong>Augest 15</strong>: Fine tune and bug fixes done, project finish.</li></ul><h3 id="availability">Availability<a class="header-anchor" href="#availability"></a></h3><p>I will stay at the university for research during the summer break, which basically is another project to do. However, the time schedule for the research is flexible, and two project at the same time is the regular workload for a normal semaster. So I believe I can manage my time accrodingly and there shouldn’t be a problem.</p><h2 id="about-me">About me<a class="header-anchor" href="#about-me"></a></h2><p>My name is Peifeng Yu, a master student at the University of Michigan majoring in Computer Science. I’ve been using KDE as my major desktop for years and really enjoy the amount of customization it allows. As a programmer, I use KDevelop for most of my projects because of its better support for CMake based projects (and yes, sometimes QtCreator if I’m using qmake ;-) ). I was excited when it first announced the integration with clang compiler. Now here’s opportunity to integrate further with llvm toolchain and it would be exciting if I can contribute to it.</p><p>As for the skills, I’ve been programming in C++ for about 5 years and it’s my favorite language. I consider myself an experienced C++ programmer thanks to my experience on ACM/ICPC during my undergraduate, which sharpened my program skills and helped me gain more insight in algorithms.</p><p>And I love Qt, which makes coding a pleasure. Although not worked on very big projects (That’s why GSoC!), I have several little programs written in C++/Qt including my graduate project, which are all hosted on Github. Apart from that, I’m always curious about language implementation details and have read a lot about C++ and Qt internals. These knowledge seems unnecessary on the first sight, but they do help me handle tricky situations when the code goes wrong. CMake and Git are also my friends, which I use on a daily basis.</p><p>Besides that, I have a strong background on all basic software related fields, such as algorithm, data structure, compiler, computer archetecture and operating systems, as learnt in my undergraduate (Software Engineering, Xi’an Jiaotong University) and graduate (Computer Science, University of Michigan) study.</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;I’ve always wanted to participate in the &lt;a href=&quot;http://summerofcode.withgoogle.com/&quot;&gt;Google Code of Summer&lt;/a&gt;. It’s cool and an super legitimate experience to put on CV, isn’t it? Anyway, what’s more exciting is that my first time proposal was accepted!&lt;/p&gt;
&lt;p&gt;So I think it might be a good chance to also post this on the blog, which may probably keeps me writing more things and make the blog more… I mean, make it less like unmaintained XD&lt;/p&gt;
&lt;p&gt;The big plan is, writing a series of articles as the project goes on and making them kind of status updates. Let see how far I can go though :P&lt;/p&gt;
&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Enabling KDevelop to use LLDB as a debugging backend, which would be especially useful on Max OS X and Windows, where gdb support is rather scarce, and it can also help people that want to switch to lldb on linux (like me!) by adding decent IDE support.&lt;/p&gt;</summary>
    
    
    
    
    <category term="c++" scheme="https://unlimited-code.works/tags/c/"/>
    
    <category term="KDE" scheme="https://unlimited-code.works/tags/kde/"/>
    
    <category term="KDevelop" scheme="https://unlimited-code.works/tags/kdevelop/"/>
    
    <category term="OpenSource" scheme="https://unlimited-code.works/tags/opensource/"/>
    
    <category term="GSoC2016" scheme="https://unlimited-code.works/tags/gsoc2016/"/>
    
    <category term="LLDB" scheme="https://unlimited-code.works/tags/lldb/"/>
    
  </entry>
  
  <entry>
    <title>全站启用HTTPS兼第一篇非测试文章</title>
    <link href="https://unlimited-code.works/blog/2015/12/08/full-https-now/"/>
    <id>https://unlimited-code.works/blog/2015/12/08/full-https-now/</id>
    <published>2015-12-09T00:01:14.000Z</published>
    <updated>2025-08-09T21:29:05.000Z</updated>
    
    <content type="html"><![CDATA[<ul><li>虽然一直在准备，然而没想到第一篇正式的文章会是这样呢(苦笑)。</li><li>从买下域名开始，差不多已经一年了。<ul><li>中间因为毕业设计还有出国，这件事就搁置了</li><li>最近受到<a href="http://silentming.net/">朋友</a>刺激才重新开始准备<ul><li>说起来友链部分也没有做呢</li></ul></li></ul></li><li>果然开博客不是一件容易的事情<ul><li>域名的调整<ul><li>从Namecheap迁移到Cloudflare想要至少部分使用HTTPS</li><li>再从Cloudflare迁移回来，因为Cloudflare没法用自定义邮件服务，我的IP又正好处于黑名单不能自己搭邮件服务器</li></ul></li><li>服务器的调整<ul><li>通过<a href="https://letsencrypt.org/">Let‘s encrypt</a>获得SSL证书，启用全站HTTPS (终于说到题目)</li><li>从Github Page转移到自己的服务器上，也是为了Let’s encrypt的认证方便</li><li>也许以后还会重新转移到Cloudflare，毕竟自己的小服务器各地访问速度应该还是不如CDN加速的好</li></ul></li><li>主题的修改<ul><li>找到符合心意的主题不容易</li><li>现在的主题经过大幅度修改后还算可以(自认为)，最近真是前端技能猛长</li><li>目前主题还不完善，搜索功能导航栏等等还在建设中，以后有机会再完成吧</li><li>还是尽快开始写点儿东西会比较好</li></ul></li><li>i18n的处理现在还不完善<ul><li>现在还是有点儿纠结究竟是做中文，英文还是两者</li><li>这个问题也是日后再处理吧，TODO列表永远在变长也是无可奈何不是么</li></ul></li></ul></li><li>关于文章<ul><li>一开始应该会先把很久之前刷ACM题的一些题解搬过来吧，至少充下场面什么的</li><li>然后是一些自己在做的pet project，想要做的idea的介绍，能吸引一些人气就好了 (虽然也没期待这儿会有什么人气就是了)</li><li>也许还会有一些关于我目前在进行的学业上的研究的记录，如果可以的话也会放上来</li><li>还有凭心情看情况的一些杂七杂八的东西</li></ul></li><li>关于这个list<ul><li>曾经看了网上一个短篇推理小说里写到完全用list的方式来写blog，(<a href="http://web.archive.org/web/20190425030216/https://www.douban.com/group/topic/20715065/">这里</a>，原链接已经失效所以链了Google搜索的第一个结果)</li><li>简直就是不会组织语言还想写blog的我的救星啊</li><li>所以虽然不知道能坚持到什么时候，什么程度，还是决定试试看</li></ul></li></ul>]]></content>
    
    
    <summary type="html">&lt;ul&gt;
&lt;li&gt;虽然一直在准备，然而没想到第一篇正式的文章会是这样呢(苦笑)。&lt;/li&gt;
&lt;li&gt;从买下域名开始，差不多已经一年了。
&lt;ul&gt;
&lt;li&gt;中间因为毕业设计还有出国，这件事就搁置了&lt;/li&gt;
&lt;li&gt;最近受到&lt;a href=&quot;http://silentming.net/&quot;&gt;朋友&lt;/a&gt;刺激才重新开始准备
&lt;ul&gt;
&lt;li&gt;说起来友链部分也没有做呢&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;果然开博客不是一件容易的事情
&lt;ul&gt;
&lt;li&gt;域名的调整
&lt;ul&gt;
&lt;li&gt;从Namecheap迁移到Cloudflare想要至少部分使用HTTPS&lt;/li&gt;
&lt;li&gt;再从Cloudflare迁移回来，因为Cloudflare没法用自定义邮件服务，我的IP又正好处于黑名单不能自己搭邮件服务器&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;服务器的调整
&lt;ul&gt;
&lt;li&gt;通过&lt;a href=&quot;https://letsencrypt.org/&quot;&gt;Let‘s encrypt&lt;/a&gt;获得SSL证书，启用全站HTTPS (终于说到题目)&lt;/li&gt;
&lt;li&gt;从Github Page转移到自己的服务器上，也是为了Let’s encrypt的认证方便&lt;/li&gt;
&lt;li&gt;也许以后还会重新转移到Cloudflare，毕竟自己的小服务器各地访问速度应该还是不如CDN加速的好&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;主题的修改
&lt;ul&gt;
&lt;li&gt;找到符合心意的主题不容易&lt;/li&gt;
&lt;li&gt;现在的主题经过大幅度修改后还算可以(自认为)，最近真是前端技能猛长&lt;/li&gt;
&lt;li&gt;目前主题还不完善，搜索功能导航栏等等还在建设中，以后有机会再完成吧&lt;/li&gt;
&lt;li&gt;还是尽快开始写点儿东西会比较好&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;i18n的处理现在还不完善
&lt;ul&gt;
&lt;li&gt;现在还是有点儿纠结究竟是做中文，英文还是两者&lt;/li&gt;
&lt;li&gt;这个问题也是日后再处理吧，TODO列表永远在变长也是无可奈何不是么&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;关于文章
&lt;ul&gt;
&lt;li&gt;一开始应该会先把很久之前刷ACM题的一些题解搬过来吧，至少充下场面什么的&lt;/li&gt;
&lt;li&gt;然后是一些自己在做的pet project，想要做的idea的介绍，能吸引一些人气就好了 (虽然也没期待这儿会有什么人气就是了)&lt;/li&gt;
&lt;li&gt;也许还会有一些关于我目前在进行的学业上的研究的记录，如果可以的话也会放上来&lt;/li&gt;
&lt;li&gt;还有凭心情看情况的一些杂七杂八的东西&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;关于这个list
&lt;ul&gt;
&lt;li&gt;曾经看了网上一个短篇推理小说里写到完全用list的方式来写blog，(&lt;a href=&quot;http://web.archive.org/web/20190425030216/https://www.douban.com/group/topic/20715065/&quot;&gt;这里&lt;/a&gt;，原链接已经失效所以链了Google搜索的第一个结果)&lt;/li&gt;
&lt;li&gt;简直就是不会组织语言还想写blog的我的救星啊&lt;/li&gt;
&lt;li&gt;所以虽然不知道能坚持到什么时候，什么程度，还是决定试试看&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</summary>
    
    
    
    
    <category term="https" scheme="https://unlimited-code.works/tags/https/"/>
    
    <category term="ssl" scheme="https://unlimited-code.works/tags/ssl/"/>
    
    <category term="meta" scheme="https://unlimited-code.works/tags/meta/"/>
    
    <category term="letsencrypt" scheme="https://unlimited-code.works/tags/letsencrypt/"/>
    
  </entry>
  
  <entry>
    <title>NJUPT 1362 汽车加油行驶问题</title>
    <link href="https://unlimited-code.works/blog/2013/12/23/njupt-1362/"/>
    <id>https://unlimited-code.works/blog/2013/12/23/njupt-1362/</id>
    <published>2013-12-23T23:23:00.000Z</published>
    <updated>2025-08-09T21:29:05.000Z</updated>
    
    <content type="html"><![CDATA[<p>嗯。。还是算法复习用到了的，竟然还有OJ上有这道题，所以过了一下</p><p>参考是<a href="https://web.archive.org/web/20170922124931/http://www.candesoft.com/blog/?p=181">Candesoft-BLOG</a></p><p>大体思路就是首先分点，记录同一位置不同剩余油量的花费。</p><pre class="language-cpp" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="0f304a3f" class="language-cpp" data-prism-hydrate="{&quot;element&quot;:&quot;0f304a3f&quot;,&quot;language&quot;:&quot;cpp&quot;,&quot;code&quot;:&quot;int cost[N+1][N+1][K+1];&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;\u003cspan class=\&quot;token keyword\&quot;\u003eint</span> cost<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token operator\&quot;>+</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token operator\&quot;>+</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>K<span class=\&quot;token operator\&quot;>+</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>&quot;}"><span class="token keyword">int</span> cost<span class="token punctuation">[</span>N<span class="token operator">+</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span>N<span class="token operator">+</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span>K<span class="token operator">+</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span></code></pre><p>然后从起点开始一点一点扩展，分别判断有和没有加油站的情况走到4个方向上是否是更优的花费。有点儿类似Dijkstra最短路的感觉。</p><pre class="line-numbers language-cpp" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="29ab563f" class="language-cpp" data-prism-hydrate="{&quot;element&quot;:&quot;29ab563f&quot;,&quot;language&quot;:&quot;cpp&quot;,&quot;code&quot;:&quot;#include \u003ciostream\u003e\n#include <queue>\n#include <cstring>\n#include <cstdio>\n#include <cmath>\nusing namespace std;\n#define ll long long\n//template<typename T>\n//inline T min(const T\u0026 a, const T&amp; b) { return a < b? a:b;}\n//template<typename T>\n//inline T max(const T&amp; a, const T&amp; b) { return a > b? a:b;}\n\nconst int N = 100;\nconst int K = 10;\nconst int dirs[][2] = {{ -1, 0}, {1, 0}, {0, -1}, {0, 1}};\n\nstruct Position\n{\n    int x, y, k;\n};\n\nqueue<Position> que;\nint cm[N + 1][N + 1][K + 1];\nint map[N + 1][N + 1];\nint inqueue[N + 1][N + 1][K + 1];\nint n, k, a, b, c;\n\nbool isValid(int x, int y)\n{\n    if(x < 1\n            || x > n\n            || y < 1\n            || y > n)\n    {\n        return false;\n    }\n    return true;\n}\n\nvoid init()\n{\n    memset(cm, -1, sizeof(cm));\n    cm[1][1][k] = 0;\n    memset(map, 0, sizeof(map));\n    memset(inqueue, 0, sizeof(inqueue));\n    while(!que.empty())\n    {\n        que.pop();\n    }\n}\n\nvoid checkBetter(int x, int y, int k, int cost)\n{\n    // If is better to go to (x, y) from (p.x, p.y)\n    if(cm[x][y][k] == -1 || cm[x][y][k] > cost)\n    {\n        cm[x][y][k] = cost;\n        if(inqueue[x][y][k] == 0)\n        {\n            Position tem;\n            tem.x = x;\n            tem.y = y;\n            tem.k = k;\n            que.push(tem);\n            inqueue[tem.x][tem.y][tem.k] = 1;\n        }\n    }\n}\n\nint driveCar()\n{\n    Position pos;\n    pos.x = pos.y = 1;\n    pos.k = k;\n    inqueue[1][1][k] = 1;\n    que.push(pos);\n\n    while(!que.empty())\n    {\n        Position p = que.front();\n        que.pop();\n        inqueue[p.x][p.y][p.k] = 0;\n        for(int d = 0; d != 4; d++)\n        {\n            int dx = dirs[d][0], dy = dirs[d][1];\n            int x = p.x + dx, y = p.y + dy;\n\n            if(isValid(x, y))\n            {\n                int cost = cm[p.x][p.y][p.k];\n                if(dx < 0)\n                {\n                    cost += b;\n                }\n                if(dy < 0)\n                {\n                    cost += b;\n                }\n\n                // No station.\n                if(p.k > 0 &amp;&amp; map[p.x][p.y] == 0)\n                {\n                    // If is better to go to (x, y) from (p.x, p.y)\n                    checkBetter(x, y, p.k - 1, cost);\n                }\n                // Has station, ether a new built one, or one already exists.\n                cost += a;\n                if(map[p.x][p.y] == 0)\n                {\n                    cost += c;\n                }\n                // Add fuel and check again\n                checkBetter(x, y, k - 1, cost);\n            }\n        }\n    }\n\n    int mincost = 0x7fffffff;\n    for(int i = 0; i <= k; i++)\n    {\n        if(cm[n][n][i] > 0 &amp;&amp; mincost > cm[n][n][i])\n        {\n            mincost = cm[n][n][i];\n        }\n    }\n    return mincost;\n}\n\nint main()\n{\n#ifdef ACM_LOCAL\n    freopen(\&quot;input.txt\&quot;, \&quot;r\&quot;, stdin);\n    //freopen(\&quot;output.txt\&quot;, \&quot;w\&quot;, stdout);\n#endif // ACM_LOCAL\n\n    while(scanf(\&quot;%d%d%d%d%d\&quot;, &amp;n, &amp;k, &amp;a, &amp;b, &amp;c) != EOF)\n    {\n        init();\n\n        for(int i = 1; i <= n; i++)\n            for(int j = 1; j <= n; j++)\n            {\n                scanf(\&quot;%d\&quot;, &amp;map[i][j]);\n            }\n\n        printf(\&quot;%d\\n\&quot;, driveCar());\n    }\n\n#ifdef ACM_LOCAL\n    printf(\&quot;Used time: %lf\\n\&quot;, clock() / (double) CLOCKS_PER_SEC);\n#endif // ACM_LOCAL\n    return 0;\n}&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span> <span class=\&quot;token string\&quot;>&amp;lt;iostream></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span> <span class=\&quot;token string\&quot;>&amp;lt;queue></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span> <span class=\&quot;token string\&quot;>&amp;lt;cstring></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span> <span class=\&quot;token string\&quot;>&amp;lt;cstdio></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span> <span class=\&quot;token string\&quot;>&amp;lt;cmath></span></span>\n<span class=\&quot;token keyword\&quot;>using</span> <span class=\&quot;token keyword\&quot;>namespace</span> std<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>define</span> <span class=\&quot;token macro-name\&quot;>ll</span> <span class=\&quot;token expression\&quot;><span class=\&quot;token keyword\&quot;>long</span> <span class=\&quot;token keyword\&quot;>long</span></span></span>\n<span class=\&quot;token comment\&quot;>//template&amp;lt;typename T></span>\n<span class=\&quot;token comment\&quot;>//inline T min(const T&amp;amp; a, const T&amp;amp; b) { return a &amp;lt; b? a:b;}</span>\n<span class=\&quot;token comment\&quot;>//template&amp;lt;typename T></span>\n<span class=\&quot;token comment\&quot;>//inline T max(const T&amp;amp; a, const T&amp;amp; b) { return a > b? a:b;}</span>\n\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> N <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>100</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> K <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>10</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> dirs<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token punctuation\&quot;>{</span><span class=\&quot;token punctuation\&quot;>{</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>}</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token punctuation\&quot;>{</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>}</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token punctuation\&quot;>{</span><span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>}</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token punctuation\&quot;>{</span><span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>}</span><span class=\&quot;token punctuation\&quot;>}</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>struct</span> <span class=\&quot;token class-name\&quot;>Position</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>int</span> x<span class=\&quot;token punctuation\&quot;>,</span> y<span class=\&quot;token punctuation\&quot;>,</span> k<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span><span class=\&quot;token punctuation\&quot;>;</span>\n\nqueue<span class=\&quot;token operator\&quot;>&amp;lt;</span>Position<span class=\&quot;token operator\&quot;>></span> que<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> cm<span class=\&quot;token punctuation\&quot;>[</span>N <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>N <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>K <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> map<span class=\&quot;token punctuation\&quot;>[</span>N <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>N <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> inqueue<span class=\&quot;token punctuation\&quot;>[</span>N <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>N <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>K <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> n<span class=\&quot;token punctuation\&quot;>,</span> k<span class=\&quot;token punctuation\&quot;>,</span> a<span class=\&quot;token punctuation\&quot;>,</span> b<span class=\&quot;token punctuation\&quot;>,</span> c<span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token function\&quot;>isValid</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> x<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> y<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>x <span class=\&quot;token operator\&quot;>&amp;lt;</span> <span class=\&quot;token number\&quot;>1</span>\n            <span class=\&quot;token operator\&quot;>||</span> x <span class=\&quot;token operator\&quot;>></span> n\n            <span class=\&quot;token operator\&quot;>||</span> y <span class=\&quot;token operator\&quot;>&amp;lt;</span> <span class=\&quot;token number\&quot;>1</span>\n            <span class=\&quot;token operator\&quot;>||</span> y <span class=\&quot;token operator\&quot;>></span> n<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token boolean\&quot;>false</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>init</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token function\&quot;>memset</span><span class=\&quot;token punctuation\&quot;>(</span>cm<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>sizeof</span><span class=\&quot;token punctuation\&quot;>(</span>cm<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    cm<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>k<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>memset</span><span class=\&quot;token punctuation\&quot;>(</span>map<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>sizeof</span><span class=\&quot;token punctuation\&quot;>(</span>map<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>memset</span><span class=\&quot;token punctuation\&quot;>(</span>inqueue<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>sizeof</span><span class=\&quot;token punctuation\&quot;>(</span>inqueue<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>!</span>que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>empty</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>pop</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>checkBetter</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> x<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> y<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> k<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> cost<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token comment\&quot;>// If is better to go to (x, y) from (p.x, p.y)</span>\n    <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>cm<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>y<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>k<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span> <span class=\&quot;token operator\&quot;>||</span> cm<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>y<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>k<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>></span> cost<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        cm<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>y<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>k<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> cost<span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>inqueue<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>y<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>k<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            Position tem<span class=\&quot;token punctuation\&quot;>;</span>\n            tem<span class=\&quot;token punctuation\&quot;>.</span>x <span class=\&quot;token operator\&quot;>=</span> x<span class=\&quot;token punctuation\&quot;>;</span>\n            tem<span class=\&quot;token punctuation\&quot;>.</span>y <span class=\&quot;token operator\&quot;>=</span> y<span class=\&quot;token punctuation\&quot;>;</span>\n            tem<span class=\&quot;token punctuation\&quot;>.</span>k <span class=\&quot;token operator\&quot;>=</span> k<span class=\&quot;token punctuation\&quot;>;</span>\n            que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>push</span><span class=\&quot;token punctuation\&quot;>(</span>tem<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            inqueue<span class=\&quot;token punctuation\&quot;>[</span>tem<span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>tem<span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>tem<span class=\&quot;token punctuation\&quot;>.</span>k<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>driveCar</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    Position pos<span class=\&quot;token punctuation\&quot;>;</span>\n    pos<span class=\&quot;token punctuation\&quot;>.</span>x <span class=\&quot;token operator\&quot;>=</span> pos<span class=\&quot;token punctuation\&quot;>.</span>y <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n    pos<span class=\&quot;token punctuation\&quot;>.</span>k <span class=\&quot;token operator\&quot;>=</span> k<span class=\&quot;token punctuation\&quot;>;</span>\n    inqueue<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>k<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n    que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>push</span><span class=\&quot;token punctuation\&quot;>(</span>pos<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>!</span>que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>empty</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        Position p <span class=\&quot;token operator\&quot;>=</span> que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>front</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>pop</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        inqueue<span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>.</span>k<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> d <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> d <span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token number\&quot;>4</span><span class=\&quot;token punctuation\&quot;>;</span> d<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token keyword\&quot;>int</span> dx <span class=\&quot;token operator\&quot;>=</span> dirs<span class=\&quot;token punctuation\&quot;>[</span>d<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> dy <span class=\&quot;token operator\&quot;>=</span> dirs<span class=\&quot;token punctuation\&quot;>[</span>d<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token keyword\&quot;>int</span> x <span class=\&quot;token operator\&quot;>=</span> p<span class=\&quot;token punctuation\&quot;>.</span>x <span class=\&quot;token operator\&quot;>+</span> dx<span class=\&quot;token punctuation\&quot;>,</span> y <span class=\&quot;token operator\&quot;>=</span> p<span class=\&quot;token punctuation\&quot;>.</span>y <span class=\&quot;token operator\&quot;>+</span> dy<span class=\&quot;token punctuation\&quot;>;</span>\n\n            <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>isValid</span><span class=\&quot;token punctuation\&quot;>(</span>x<span class=\&quot;token punctuation\&quot;>,</span> y<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                <span class=\&quot;token keyword\&quot;>int</span> cost <span class=\&quot;token operator\&quot;>=</span> cm<span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>.</span>k<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>dx <span class=\&quot;token operator\&quot;>&amp;lt;</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token punctuation\&quot;>{</span>\n                    cost <span class=\&quot;token operator\&quot;>+=</span> b<span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token punctuation\&quot;>}</span>\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>dy <span class=\&quot;token operator\&quot;>&amp;lt;</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token punctuation\&quot;>{</span>\n                    cost <span class=\&quot;token operator\&quot;>+=</span> b<span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token punctuation\&quot;>}</span>\n\n                <span class=\&quot;token comment\&quot;>// No station.</span>\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>p<span class=\&quot;token punctuation\&quot;>.</span>k <span class=\&quot;token operator\&quot;>></span> <span class=\&quot;token number\&quot;>0</span> <span class=\&quot;token operator\&quot;>&amp;amp;&amp;amp;</span> map<span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token punctuation\&quot;>{</span>\n                    <span class=\&quot;token comment\&quot;>// If is better to go to (x, y) from (p.x, p.y)</span>\n                    <span class=\&quot;token function\&quot;>checkBetter</span><span class=\&quot;token punctuation\&quot;>(</span>x<span class=\&quot;token punctuation\&quot;>,</span> y<span class=\&quot;token punctuation\&quot;>,</span> p<span class=\&quot;token punctuation\&quot;>.</span>k <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> cost<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token punctuation\&quot;>}</span>\n                <span class=\&quot;token comment\&quot;>// Has station, ether a new built one, or one already exists.</span>\n                cost <span class=\&quot;token operator\&quot;>+=</span> a<span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>map<span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token punctuation\&quot;>{</span>\n                    cost <span class=\&quot;token operator\&quot;>+=</span> c<span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token punctuation\&quot;>}</span>\n                <span class=\&quot;token comment\&quot;>// Add fuel and check again</span>\n                <span class=\&quot;token function\&quot;>checkBetter</span><span class=\&quot;token punctuation\&quot;>(</span>x<span class=\&quot;token punctuation\&quot;>,</span> y<span class=\&quot;token punctuation\&quot;>,</span> k <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> cost<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>int</span> mincost <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0x7fffffff</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i <span class=\&quot;token operator\&quot;>&amp;lt;=</span> k<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>cm<span class=\&quot;token punctuation\&quot;>[</span>n<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>n<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>></span> <span class=\&quot;token number\&quot;>0</span> <span class=\&quot;token operator\&quot;>&amp;amp;&amp;amp;</span> mincost <span class=\&quot;token operator\&quot;>></span> cm<span class=\&quot;token punctuation\&quot;>[</span>n<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>n<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            mincost <span class=\&quot;token operator\&quot;>=</span> cm<span class=\&quot;token punctuation\&quot;>[</span>n<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>n<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token keyword\&quot;>return</span> mincost<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>main</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>ifdef</span> <span class=\&quot;token expression\&quot;>ACM_LOCAL</span></span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;input.txt\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;r\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdin</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token comment\&quot;>//freopen(\&quot;output.txt\&quot;, \&quot;w\&quot;, stdout);</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>endif</span> <span class=\&quot;token comment\&quot;>// ACM_LOCAL</span></span>\n\n    <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d%d%d%d%d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>n<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>k<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>a<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>b<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>c<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token constant\&quot;>EOF</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token function\&quot;>init</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> i <span class=\&quot;token operator\&quot;>&amp;lt;=</span> n<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> j <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> j <span class=\&quot;token operator\&quot;>&amp;lt;=</span> n<span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>map<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n\n        <span class=\&quot;token function\&quot;>printf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token function\&quot;>driveCar</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>ifdef</span> <span class=\&quot;token expression\&quot;>ACM_LOCAL</span></span>\n    <span class=\&quot;token function\&quot;>printf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;Used time: %lf\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token function\&quot;>clock</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>/</span> <span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>double</span><span class=\&quot;token punctuation\&quot;>)</span> CLOCKS_PER_SEC<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>endif</span> <span class=\&quot;token comment\&quot;>// ACM_LOCAL</span></span>\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>&quot;,&quot;plugins&quot;:{&quot;lineNumbers&quot;:true}}"><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">&lt;iostream&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">&lt;queue&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">&lt;cstring&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">&lt;cstdio&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">&lt;cmath&gt;</span></span><span class="token keyword">using</span> <span class="token keyword">namespace</span> std<span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">ll</span> <span class="token expression"><span class="token keyword">long</span> <span class="token keyword">long</span></span></span><span class="token comment">//template&lt;typename T&gt;</span><span class="token comment">//inline T min(const T&amp; a, const T&amp; b) { return a &lt; b? a:b;}</span><span class="token comment">//template&lt;typename T&gt;</span><span class="token comment">//inline T max(const T&amp; a, const T&amp; b) { return a &gt; b? a:b;}</span><span class="token keyword">const</span> <span class="token keyword">int</span> N <span class="token operator">=</span> <span class="token number">100</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> K <span class="token operator">=</span> <span class="token number">10</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> dirs<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">{</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">;</span><span class="token keyword">struct</span> <span class="token class-name">Position</span><span class="token punctuation">{</span>    <span class="token keyword">int</span> x<span class="token punctuation">,</span> y<span class="token punctuation">,</span> k<span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">;</span>queue<span class="token operator">&lt;</span>Position<span class="token operator">&gt;</span> que<span class="token punctuation">;</span><span class="token keyword">int</span> cm<span class="token punctuation">[</span>N <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span>N <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span>K <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span> map<span class="token punctuation">[</span>N <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span>N <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span> inqueue<span class="token punctuation">[</span>N <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span>N <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span>K <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span> n<span class="token punctuation">,</span> k<span class="token punctuation">,</span> a<span class="token punctuation">,</span> b<span class="token punctuation">,</span> c<span class="token punctuation">;</span><span class="token keyword">bool</span> <span class="token function">isValid</span><span class="token punctuation">(</span><span class="token keyword">int</span> x<span class="token punctuation">,</span> <span class="token keyword">int</span> y<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">if</span><span class="token punctuation">(</span>x <span class="token operator">&lt;</span> <span class="token number">1</span>            <span class="token operator">||</span> x <span class="token operator">&gt;</span> n            <span class="token operator">||</span> y <span class="token operator">&lt;</span> <span class="token number">1</span>            <span class="token operator">||</span> y <span class="token operator">&gt;</span> n<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">void</span> <span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token function">memset</span><span class="token punctuation">(</span>cm<span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token keyword">sizeof</span><span class="token punctuation">(</span>cm<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    cm<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span>k<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>    <span class="token function">memset</span><span class="token punctuation">(</span>map<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token keyword">sizeof</span><span class="token punctuation">(</span>map<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token function">memset</span><span class="token punctuation">(</span>inqueue<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token keyword">sizeof</span><span class="token punctuation">(</span>inqueue<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">while</span><span class="token punctuation">(</span><span class="token operator">!</span>que<span class="token punctuation">.</span><span class="token function">empty</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        que<span class="token punctuation">.</span><span class="token function">pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token keyword">void</span> <span class="token function">checkBetter</span><span class="token punctuation">(</span><span class="token keyword">int</span> x<span class="token punctuation">,</span> <span class="token keyword">int</span> y<span class="token punctuation">,</span> <span class="token keyword">int</span> k<span class="token punctuation">,</span> <span class="token keyword">int</span> cost<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token comment">// If is better to go to (x, y) from (p.x, p.y)</span>    <span class="token keyword">if</span><span class="token punctuation">(</span>cm<span class="token punctuation">[</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>y<span class="token punctuation">]</span><span class="token punctuation">[</span>k<span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token operator">-</span><span class="token number">1</span> <span class="token operator">||</span> cm<span class="token punctuation">[</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>y<span class="token punctuation">]</span><span class="token punctuation">[</span>k<span class="token punctuation">]</span> <span class="token operator">&gt;</span> cost<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        cm<span class="token punctuation">[</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>y<span class="token punctuation">]</span><span class="token punctuation">[</span>k<span class="token punctuation">]</span> <span class="token operator">=</span> cost<span class="token punctuation">;</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>inqueue<span class="token punctuation">[</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>y<span class="token punctuation">]</span><span class="token punctuation">[</span>k<span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            Position tem<span class="token punctuation">;</span>            tem<span class="token punctuation">.</span>x <span class="token operator">=</span> x<span class="token punctuation">;</span>            tem<span class="token punctuation">.</span>y <span class="token operator">=</span> y<span class="token punctuation">;</span>            tem<span class="token punctuation">.</span>k <span class="token operator">=</span> k<span class="token punctuation">;</span>            que<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>tem<span class="token punctuation">)</span><span class="token punctuation">;</span>            inqueue<span class="token punctuation">[</span>tem<span class="token punctuation">.</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>tem<span class="token punctuation">.</span>y<span class="token punctuation">]</span><span class="token punctuation">[</span>tem<span class="token punctuation">.</span>k<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token keyword">int</span> <span class="token function">driveCar</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    Position pos<span class="token punctuation">;</span>    pos<span class="token punctuation">.</span>x <span class="token operator">=</span> pos<span class="token punctuation">.</span>y <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>    pos<span class="token punctuation">.</span>k <span class="token operator">=</span> k<span class="token punctuation">;</span>    inqueue<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span>k<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>    que<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>pos<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">while</span><span class="token punctuation">(</span><span class="token operator">!</span>que<span class="token punctuation">.</span><span class="token function">empty</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        Position p <span class="token operator">=</span> que<span class="token punctuation">.</span><span class="token function">front</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        que<span class="token punctuation">.</span><span class="token function">pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        inqueue<span class="token punctuation">[</span>p<span class="token punctuation">.</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>p<span class="token punctuation">.</span>y<span class="token punctuation">]</span><span class="token punctuation">[</span>p<span class="token punctuation">.</span>k<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> d <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> d <span class="token operator">!=</span> <span class="token number">4</span><span class="token punctuation">;</span> d<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token keyword">int</span> dx <span class="token operator">=</span> dirs<span class="token punctuation">[</span>d<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span> dy <span class="token operator">=</span> dirs<span class="token punctuation">[</span>d<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span>            <span class="token keyword">int</span> x <span class="token operator">=</span> p<span class="token punctuation">.</span>x <span class="token operator">+</span> dx<span class="token punctuation">,</span> y <span class="token operator">=</span> p<span class="token punctuation">.</span>y <span class="token operator">+</span> dy<span class="token punctuation">;</span>            <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">isValid</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> y<span class="token punctuation">)</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                <span class="token keyword">int</span> cost <span class="token operator">=</span> cm<span class="token punctuation">[</span>p<span class="token punctuation">.</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>p<span class="token punctuation">.</span>y<span class="token punctuation">]</span><span class="token punctuation">[</span>p<span class="token punctuation">.</span>k<span class="token punctuation">]</span><span class="token punctuation">;</span>                <span class="token keyword">if</span><span class="token punctuation">(</span>dx <span class="token operator">&lt;</span> <span class="token number">0</span><span class="token punctuation">)</span>                <span class="token punctuation">{</span>                    cost <span class="token operator">+=</span> b<span class="token punctuation">;</span>                <span class="token punctuation">}</span>                <span class="token keyword">if</span><span class="token punctuation">(</span>dy <span class="token operator">&lt;</span> <span class="token number">0</span><span class="token punctuation">)</span>                <span class="token punctuation">{</span>                    cost <span class="token operator">+=</span> b<span class="token punctuation">;</span>                <span class="token punctuation">}</span>                <span class="token comment">// No station.</span>                <span class="token keyword">if</span><span class="token punctuation">(</span>p<span class="token punctuation">.</span>k <span class="token operator">&gt;</span> <span class="token number">0</span> <span class="token operator">&amp;&amp;</span> map<span class="token punctuation">[</span>p<span class="token punctuation">.</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>p<span class="token punctuation">.</span>y<span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">)</span>                <span class="token punctuation">{</span>                    <span class="token comment">// If is better to go to (x, y) from (p.x, p.y)</span>                    <span class="token function">checkBetter</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> y<span class="token punctuation">,</span> p<span class="token punctuation">.</span>k <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">,</span> cost<span class="token punctuation">)</span><span class="token punctuation">;</span>                <span class="token punctuation">}</span>                <span class="token comment">// Has station, ether a new built one, or one already exists.</span>                cost <span class="token operator">+=</span> a<span class="token punctuation">;</span>                <span class="token keyword">if</span><span class="token punctuation">(</span>map<span class="token punctuation">[</span>p<span class="token punctuation">.</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>p<span class="token punctuation">.</span>y<span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">)</span>                <span class="token punctuation">{</span>                    cost <span class="token operator">+=</span> c<span class="token punctuation">;</span>                <span class="token punctuation">}</span>                <span class="token comment">// Add fuel and check again</span>                <span class="token function">checkBetter</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> y<span class="token punctuation">,</span> k <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">,</span> cost<span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token punctuation">}</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token keyword">int</span> mincost <span class="token operator">=</span> <span class="token number">0x7fffffff</span><span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;=</span> k<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>cm<span class="token punctuation">[</span>n<span class="token punctuation">]</span><span class="token punctuation">[</span>n<span class="token punctuation">]</span><span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">&gt;</span> <span class="token number">0</span> <span class="token operator">&amp;&amp;</span> mincost <span class="token operator">&gt;</span> cm<span class="token punctuation">[</span>n<span class="token punctuation">]</span><span class="token punctuation">[</span>n<span class="token punctuation">]</span><span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            mincost <span class="token operator">=</span> cm<span class="token punctuation">[</span>n<span class="token punctuation">]</span><span class="token punctuation">[</span>n<span class="token punctuation">]</span><span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token keyword">return</span> mincost<span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">ifdef</span> <span class="token expression">ACM_LOCAL</span></span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"input.txt"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">,</span> <span class="token constant">stdin</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token comment">//freopen("output.txt", "w", stdout);</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">endif</span> <span class="token comment">// ACM_LOCAL</span></span>    <span class="token keyword">while</span><span class="token punctuation">(</span><span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d%d%d%d%d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>n<span class="token punctuation">,</span> <span class="token operator">&amp;</span>k<span class="token punctuation">,</span> <span class="token operator">&amp;</span>a<span class="token punctuation">,</span> <span class="token operator">&amp;</span>b<span class="token punctuation">,</span> <span class="token operator">&amp;</span>c<span class="token punctuation">)</span> <span class="token operator">!=</span> <span class="token constant">EOF</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> i <span class="token operator">&lt;=</span> n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>            <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> j <span class="token operator">&lt;=</span> n<span class="token punctuation">;</span> j<span class="token operator">++</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>map<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token punctuation">}</span>        <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%d\n"</span><span class="token punctuation">,</span> <span class="token function">driveCar</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">ifdef</span> <span class="token expression">ACM_LOCAL</span></span>    <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"Used time: %lf\n"</span><span class="token punctuation">,</span> <span class="token function">clock</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token keyword">double</span><span class="token punctuation">)</span> CLOCKS_PER_SEC<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">endif</span> <span class="token comment">// ACM_LOCAL</span></span>    <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>速度还是挺快的：</p><p><img data-zoom-src="/assets/img/huge_njupt-1362.png" data-src="/assets/img/body_njupt-1362.png" alt="Result" /></p><p>不过Candesoft-BLOG里说的分层图最短路的没有仔细看。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;嗯。。还是算法复习用到了的，竟然还有OJ上有这道题，所以过了一下&lt;/p&gt;
&lt;p&gt;参考是&lt;a href=&quot;https://web.archive.org/web/20170922124931/http://www.candesoft.com/blog/?p=181&quot;&gt;Candesoft-BLOG&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;大体思路就是首先分点，记录同一位置不同剩余油量的花费。&lt;/p&gt;
&lt;pre class=&quot;language-cpp&quot; style=&quot;max-height: 30em&quot; data-prismjs-copy-timeout=&quot;500&quot; tabindex=&quot;0&quot;&gt;&lt;code id=&quot;0f304a3f&quot; class=&quot;language-cpp&quot; data-prism-hydrate=&quot;{&amp;quot;element&amp;quot;:&amp;quot;0f304a3f&amp;quot;,&amp;quot;language&amp;quot;:&amp;quot;cpp&amp;quot;,&amp;quot;code&amp;quot;:&amp;quot;int cost[N+1][N+1][K+1];&amp;quot;,&amp;quot;settings&amp;quot;:{},&amp;quot;vars&amp;quot;:{&amp;quot;command-line&amp;quot;:{&amp;quot;complete&amp;quot;:true}},&amp;quot;highlightedCode&amp;quot;:&amp;quot;&#92;u003cspan class=&#92;&amp;quot;token keyword&#92;&amp;quot;&#92;u003eint&lt;/span&gt; cost&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;K&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&amp;quot;}&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; cost&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;K&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后从起点开始一点一点扩展，分别判断有和没有加油站的情况走到4个方向上是否是更优的花费。有点儿类似Dijkstra最短路的感觉。&lt;/p&gt;</summary>
    
    
    
    
    <category term="ACM" scheme="https://unlimited-code.works/tags/acm/"/>
    
    <category term="NJUPT" scheme="https://unlimited-code.works/tags/njupt/"/>
    
    <category term="NoteKeeping" scheme="https://unlimited-code.works/tags/notekeeping/"/>
    
  </entry>
  
  <entry>
    <title>带权图模板</title>
    <link href="https://unlimited-code.works/blog/2013/12/22/weighted-graph-template/"/>
    <id>https://unlimited-code.works/blog/2013/12/22/weighted-graph-template/</id>
    <published>2013-12-23T07:40:00.000Z</published>
    <updated>2025-08-09T21:29:05.000Z</updated>
    
    <content type="html"><![CDATA[<p>使用前向星方法（应该是吧？我着实不确定这种我不知道从哪看到之后一直在用的存储方法究竟叫什么= =）存储的带权图，实现了通用的DFS和BFS算法，可以通过函数对象使用。</p><p>正好这两天复习算法，所以整理了一下。有些时候有这么一个模板还是挺方便的说。</p><p>直接上代码了</p><pre class="line-numbers language-cpp" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="ed008e3d" class="language-cpp" data-prism-hydrate="{&quot;element&quot;:&quot;ed008e3d&quot;,&quot;language&quot;:&quot;cpp&quot;,&quot;code&quot;:&quot;struct ForwardStarWGraph;\nstruct Node;\n\nstruct CallbackFunctor\n{\n    virtual bool shouldExtend(ForwardStarWGraph\u0026 graph, Node&amp; toExtend) = 0;\n    virtual bool operator() (ForwardStarWGraph&amp; graph, Node&amp; curr) = 0;\n};\n\nstruct Node\n{\n    int i;\n    int from;\n    int edge;\n    int totalWight;\n    vector\u003cint\u003e path;\n};\n\nconst int N = 20; // max vertex conut\nconst int M = N*N; // max edge count\n\nstruct ForwardStarWGraph\n{\n    int to[M], nxt[M], head[N];\n    int wight[M];\n    int ecnt;\n    // Actual vertex number\n    int n;\n\n    void graphInit(int nn, int m)\n    {\n        ecnt = 0;\n        n = nn;\n        memset(head, -1, sizeof(head));\n    }\n\n    // Add an edge, vertex counts from 0\n    void addEdge(int u, int v, int w)\n    {\n        to[ecnt] = v;\n        wight[ecnt] = w;\n        nxt[ecnt] = head[u];\n        head[u] = ecnt;\n        ecnt++;\n    }\n\n    // Add an undirectional edge\n    void addBiEdge(int u, int v, int w)\n    {\n        addEdge(u, v, w);\n        addEdge(v, u, w);\n    }\n\n    int wightBetween(int a, int b)\n    {\n        if(a == b)\n            return 0;\n        for(int e = head[a]; e!= -1; e = nxt[e])\n        {\n            if(to[e] == b)\n                return wight[e];\n        }\n        return -1;\n    }\n\n    void bfs(CallbackFunctor&amp; func)\n    {\n        queue<Node> Q;\n\n        Node tem;\n        tem.i = 0;\n        tem.from = -1;\n        tem.edge = -1;\n        tem.totalWight = 0;\n        tem.path.push_back(0);\n        Q.push(tem);\n\n        while(!Q.empty())\n        {\n            Node t = Q.front(); Q.pop();\n\n            func(*this, t);\n\n            for(int e = head[t.i]; e!= -1; e = nxt[e])\n            {\n                if(to[e] == t.from)\n                    continue;\n                Node t2;\n                t2.i = to[e];\n                t2.from = t.i;\n                t2.edge = e;\n                t2.totalWight = t.totalWight + wight[e];\n                t2.path = t.path; t2.path.push_back(t2.i);\n                if(func.shouldExtend(*this, t2))\n                {\n                    Q.push(t2);\n                }\n            }\n        }\n    }\n\n    void dfs(CallbackFunctor&amp; func)\n    {\n        stack<Node> Q;\n\n        Node tem;\n        tem.i = 0;\n        tem.from = -1;\n        tem.edge = -1;\n        tem.totalWight = 0;\n        tem.path.push_back(0);\n        Q.push(tem);\n\n        while(!Q.empty())\n        {\n            Node t = Q.top(); Q.pop();\n\n            func(*this, t);\n\n            for(int e = head[t.i]; e!= -1; e = nxt[e])\n            {\n                if(to[e] == t.from)\n                    continue;\n                Node t2;\n                t2.i = to[e];\n                t2.from = t.i;\n                t2.edge = e;\n                t2.totalWight = t.totalWight + wight[e];\n                t2.path = t.path; t2.path.push_back(t2.i);\n                if(func.shouldExtend(*this, t2))\n                {\n                    Q.push(t2);\n                }\n            }\n        }\n    }\n};&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;<span class=\&quot;token keyword\&quot;>struct</span> <span class=\&quot;token class-name\&quot;>ForwardStarWGraph</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>struct</span> <span class=\&quot;token class-name\&quot;>Node</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>struct</span> <span class=\&quot;token class-name\&quot;>CallbackFunctor</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>virtual</span> <span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token function\&quot;>shouldExtend</span><span class=\&quot;token punctuation\&quot;>(</span>ForwardStarWGraph<span class=\&quot;token operator\&quot;>&amp;amp;</span> graph<span class=\&quot;token punctuation\&quot;>,</span> Node<span class=\&quot;token operator\&quot;>&amp;amp;</span> toExtend<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>virtual</span> <span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token keyword\&quot;>operator</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token punctuation\&quot;>(</span>ForwardStarWGraph<span class=\&quot;token operator\&quot;>&amp;amp;</span> graph<span class=\&quot;token punctuation\&quot;>,</span> Node<span class=\&quot;token operator\&quot;>&amp;amp;</span> curr<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>struct</span> <span class=\&quot;token class-name\&quot;>Node</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>int</span> i<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>int</span> from<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>int</span> edge<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>int</span> totalWight<span class=\&quot;token punctuation\&quot;>;</span>\n    vector<span class=\&quot;token operator\&quot;>&amp;lt;</span><span class=\&quot;token keyword\&quot;>int</span><span class=\&quot;token operator\&quot;>></span> path<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> N <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>20</span><span class=\&quot;token punctuation\&quot;>;</span> <span class=\&quot;token comment\&quot;>// max vertex conut</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> M <span class=\&quot;token operator\&quot;>=</span> N<span class=\&quot;token operator\&quot;>*</span>N<span class=\&quot;token punctuation\&quot;>;</span> <span class=\&quot;token comment\&quot;>// max edge count</span>\n\n<span class=\&quot;token keyword\&quot;>struct</span> <span class=\&quot;token class-name\&quot;>ForwardStarWGraph</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>int</span> to<span class=\&quot;token punctuation\&quot;>[</span>M<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> nxt<span class=\&quot;token punctuation\&quot;>[</span>M<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> head<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>int</span> wight<span class=\&quot;token punctuation\&quot;>[</span>M<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>int</span> ecnt<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token comment\&quot;>// Actual vertex number</span>\n    <span class=\&quot;token keyword\&quot;>int</span> n<span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>graphInit</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> nn<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> m<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        ecnt <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n        n <span class=\&quot;token operator\&quot;>=</span> nn<span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token function\&quot;>memset</span><span class=\&quot;token punctuation\&quot;>(</span>head<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>sizeof</span><span class=\&quot;token punctuation\&quot;>(</span>head<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token comment\&quot;>// Add an edge, vertex counts from 0</span>\n    <span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>addEdge</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> u<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> v<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> w<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        to<span class=\&quot;token punctuation\&quot;>[</span>ecnt<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> v<span class=\&quot;token punctuation\&quot;>;</span>\n        wight<span class=\&quot;token punctuation\&quot;>[</span>ecnt<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> w<span class=\&quot;token punctuation\&quot;>;</span>\n        nxt<span class=\&quot;token punctuation\&quot;>[</span>ecnt<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> head<span class=\&quot;token punctuation\&quot;>[</span>u<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n        head<span class=\&quot;token punctuation\&quot;>[</span>u<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> ecnt<span class=\&quot;token punctuation\&quot;>;</span>\n        ecnt<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token comment\&quot;>// Add an undirectional edge</span>\n    <span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>addBiEdge</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> u<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> v<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> w<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token function\&quot;>addEdge</span><span class=\&quot;token punctuation\&quot;>(</span>u<span class=\&quot;token punctuation\&quot;>,</span> v<span class=\&quot;token punctuation\&quot;>,</span> w<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token function\&quot;>addEdge</span><span class=\&quot;token punctuation\&quot;>(</span>v<span class=\&quot;token punctuation\&quot;>,</span> u<span class=\&quot;token punctuation\&quot;>,</span> w<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>wightBetween</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> a<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> b<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>a <span class=\&quot;token operator\&quot;>==</span> b<span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> e <span class=\&quot;token operator\&quot;>=</span> head<span class=\&quot;token punctuation\&quot;>[</span>a<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span> e<span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> e <span class=\&quot;token operator\&quot;>=</span> nxt<span class=\&quot;token punctuation\&quot;>[</span>e<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>to<span class=\&quot;token punctuation\&quot;>[</span>e<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> b<span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token keyword\&quot;>return</span> wight<span class=\&quot;token punctuation\&quot;>[</span>e<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>bfs</span><span class=\&quot;token punctuation\&quot;>(</span>CallbackFunctor<span class=\&quot;token operator\&quot;>&amp;amp;</span> func<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        queue<span class=\&quot;token operator\&quot;>&amp;lt;</span>Node<span class=\&quot;token operator\&quot;>></span> Q<span class=\&quot;token punctuation\&quot;>;</span>\n\n        Node tem<span class=\&quot;token punctuation\&quot;>;</span>\n        tem<span class=\&quot;token punctuation\&quot;>.</span>i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n        tem<span class=\&quot;token punctuation\&quot;>.</span>from <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n        tem<span class=\&quot;token punctuation\&quot;>.</span>edge <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n        tem<span class=\&quot;token punctuation\&quot;>.</span>totalWight <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n        tem<span class=\&quot;token punctuation\&quot;>.</span>path<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>push_back</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        Q<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>push</span><span class=\&quot;token punctuation\&quot;>(</span>tem<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n        <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>!</span>Q<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>empty</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            Node t <span class=\&quot;token operator\&quot;>=</span> Q<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>front</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span> Q<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>pop</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n            <span class=\&quot;token function\&quot;>func</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>*</span><span class=\&quot;token keyword\&quot;>this</span><span class=\&quot;token punctuation\&quot;>,</span> t<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n            <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> e <span class=\&quot;token operator\&quot;>=</span> head<span class=\&quot;token punctuation\&quot;>[</span>t<span class=\&quot;token punctuation\&quot;>.</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span> e<span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> e <span class=\&quot;token operator\&quot;>=</span> nxt<span class=\&quot;token punctuation\&quot;>[</span>e<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>to<span class=\&quot;token punctuation\&quot;>[</span>e<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> t<span class=\&quot;token punctuation\&quot;>.</span>from<span class=\&quot;token punctuation\&quot;>)</span>\n                    <span class=\&quot;token keyword\&quot;>continue</span><span class=\&quot;token punctuation\&quot;>;</span>\n                Node t2<span class=\&quot;token punctuation\&quot;>;</span>\n                t2<span class=\&quot;token punctuation\&quot;>.</span>i <span class=\&quot;token operator\&quot;>=</span> to<span class=\&quot;token punctuation\&quot;>[</span>e<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n                t2<span class=\&quot;token punctuation\&quot;>.</span>from <span class=\&quot;token operator\&quot;>=</span> t<span class=\&quot;token punctuation\&quot;>.</span>i<span class=\&quot;token punctuation\&quot;>;</span>\n                t2<span class=\&quot;token punctuation\&quot;>.</span>edge <span class=\&quot;token operator\&quot;>=</span> e<span class=\&quot;token punctuation\&quot;>;</span>\n                t2<span class=\&quot;token punctuation\&quot;>.</span>totalWight <span class=\&quot;token operator\&quot;>=</span> t<span class=\&quot;token punctuation\&quot;>.</span>totalWight <span class=\&quot;token operator\&quot;>+</span> wight<span class=\&quot;token punctuation\&quot;>[</span>e<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n                t2<span class=\&quot;token punctuation\&quot;>.</span>path <span class=\&quot;token operator\&quot;>=</span> t<span class=\&quot;token punctuation\&quot;>.</span>path<span class=\&quot;token punctuation\&quot;>;</span> t2<span class=\&quot;token punctuation\&quot;>.</span>path<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>push_back</span><span class=\&quot;token punctuation\&quot;>(</span>t2<span class=\&quot;token punctuation\&quot;>.</span>i<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>func<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>shouldExtend</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>*</span><span class=\&quot;token keyword\&quot;>this</span><span class=\&quot;token punctuation\&quot;>,</span> t2<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token punctuation\&quot;>{</span>\n                    Q<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>push</span><span class=\&quot;token punctuation\&quot;>(</span>t2<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token punctuation\&quot;>}</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>dfs</span><span class=\&quot;token punctuation\&quot;>(</span>CallbackFunctor<span class=\&quot;token operator\&quot;>&amp;amp;</span> func<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        stack<span class=\&quot;token operator\&quot;>&amp;lt;</span>Node<span class=\&quot;token operator\&quot;>></span> Q<span class=\&quot;token punctuation\&quot;>;</span>\n\n        Node tem<span class=\&quot;token punctuation\&quot;>;</span>\n        tem<span class=\&quot;token punctuation\&quot;>.</span>i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n        tem<span class=\&quot;token punctuation\&quot;>.</span>from <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n        tem<span class=\&quot;token punctuation\&quot;>.</span>edge <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n        tem<span class=\&quot;token punctuation\&quot;>.</span>totalWight <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n        tem<span class=\&quot;token punctuation\&quot;>.</span>path<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>push_back</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        Q<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>push</span><span class=\&quot;token punctuation\&quot;>(</span>tem<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n        <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>!</span>Q<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>empty</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            Node t <span class=\&quot;token operator\&quot;>=</span> Q<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>top</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span> Q<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>pop</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n            <span class=\&quot;token function\&quot;>func</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>*</span><span class=\&quot;token keyword\&quot;>this</span><span class=\&quot;token punctuation\&quot;>,</span> t<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n            <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> e <span class=\&quot;token operator\&quot;>=</span> head<span class=\&quot;token punctuation\&quot;>[</span>t<span class=\&quot;token punctuation\&quot;>.</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span> e<span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> e <span class=\&quot;token operator\&quot;>=</span> nxt<span class=\&quot;token punctuation\&quot;>[</span>e<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>to<span class=\&quot;token punctuation\&quot;>[</span>e<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> t<span class=\&quot;token punctuation\&quot;>.</span>from<span class=\&quot;token punctuation\&quot;>)</span>\n                    <span class=\&quot;token keyword\&quot;>continue</span><span class=\&quot;token punctuation\&quot;>;</span>\n                Node t2<span class=\&quot;token punctuation\&quot;>;</span>\n                t2<span class=\&quot;token punctuation\&quot;>.</span>i <span class=\&quot;token operator\&quot;>=</span> to<span class=\&quot;token punctuation\&quot;>[</span>e<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n                t2<span class=\&quot;token punctuation\&quot;>.</span>from <span class=\&quot;token operator\&quot;>=</span> t<span class=\&quot;token punctuation\&quot;>.</span>i<span class=\&quot;token punctuation\&quot;>;</span>\n                t2<span class=\&quot;token punctuation\&quot;>.</span>edge <span class=\&quot;token operator\&quot;>=</span> e<span class=\&quot;token punctuation\&quot;>;</span>\n                t2<span class=\&quot;token punctuation\&quot;>.</span>totalWight <span class=\&quot;token operator\&quot;>=</span> t<span class=\&quot;token punctuation\&quot;>.</span>totalWight <span class=\&quot;token operator\&quot;>+</span> wight<span class=\&quot;token punctuation\&quot;>[</span>e<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n                t2<span class=\&quot;token punctuation\&quot;>.</span>path <span class=\&quot;token operator\&quot;>=</span> t<span class=\&quot;token punctuation\&quot;>.</span>path<span class=\&quot;token punctuation\&quot;>;</span> t2<span class=\&quot;token punctuation\&quot;>.</span>path<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>push_back</span><span class=\&quot;token punctuation\&quot;>(</span>t2<span class=\&quot;token punctuation\&quot;>.</span>i<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>func<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>shouldExtend</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>*</span><span class=\&quot;token keyword\&quot;>this</span><span class=\&quot;token punctuation\&quot;>,</span> t2<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token punctuation\&quot;>{</span>\n                    Q<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>push</span><span class=\&quot;token punctuation\&quot;>(</span>t2<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token punctuation\&quot;>}</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span><span class=\&quot;token punctuation\&quot;>;</span>&quot;,&quot;plugins&quot;:{&quot;lineNumbers&quot;:true}}"><span class="token keyword">struct</span> <span class="token class-name">ForwardStarWGraph</span><span class="token punctuation">;</span><span class="token keyword">struct</span> <span class="token class-name">Node</span><span class="token punctuation">;</span><span class="token keyword">struct</span> <span class="token class-name">CallbackFunctor</span><span class="token punctuation">{</span>    <span class="token keyword">virtual</span> <span class="token keyword">bool</span> <span class="token function">shouldExtend</span><span class="token punctuation">(</span>ForwardStarWGraph<span class="token operator">&amp;</span> graph<span class="token punctuation">,</span> Node<span class="token operator">&amp;</span> toExtend<span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>    <span class="token keyword">virtual</span> <span class="token keyword">bool</span> <span class="token keyword">operator</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">(</span>ForwardStarWGraph<span class="token operator">&amp;</span> graph<span class="token punctuation">,</span> Node<span class="token operator">&amp;</span> curr<span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">;</span><span class="token keyword">struct</span> <span class="token class-name">Node</span><span class="token punctuation">{</span>    <span class="token keyword">int</span> i<span class="token punctuation">;</span>    <span class="token keyword">int</span> from<span class="token punctuation">;</span>    <span class="token keyword">int</span> edge<span class="token punctuation">;</span>    <span class="token keyword">int</span> totalWight<span class="token punctuation">;</span>    vector<span class="token operator">&lt;</span><span class="token keyword">int</span><span class="token operator">&gt;</span> path<span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> N <span class="token operator">=</span> <span class="token number">20</span><span class="token punctuation">;</span> <span class="token comment">// max vertex conut</span><span class="token keyword">const</span> <span class="token keyword">int</span> M <span class="token operator">=</span> N<span class="token operator">*</span>N<span class="token punctuation">;</span> <span class="token comment">// max edge count</span><span class="token keyword">struct</span> <span class="token class-name">ForwardStarWGraph</span><span class="token punctuation">{</span>    <span class="token keyword">int</span> to<span class="token punctuation">[</span>M<span class="token punctuation">]</span><span class="token punctuation">,</span> nxt<span class="token punctuation">[</span>M<span class="token punctuation">]</span><span class="token punctuation">,</span> head<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">;</span>    <span class="token keyword">int</span> wight<span class="token punctuation">[</span>M<span class="token punctuation">]</span><span class="token punctuation">;</span>    <span class="token keyword">int</span> ecnt<span class="token punctuation">;</span>    <span class="token comment">// Actual vertex number</span>    <span class="token keyword">int</span> n<span class="token punctuation">;</span>    <span class="token keyword">void</span> <span class="token function">graphInit</span><span class="token punctuation">(</span><span class="token keyword">int</span> nn<span class="token punctuation">,</span> <span class="token keyword">int</span> m<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        ecnt <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>        n <span class="token operator">=</span> nn<span class="token punctuation">;</span>        <span class="token function">memset</span><span class="token punctuation">(</span>head<span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token keyword">sizeof</span><span class="token punctuation">(</span>head<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token comment">// Add an edge, vertex counts from 0</span>    <span class="token keyword">void</span> <span class="token function">addEdge</span><span class="token punctuation">(</span><span class="token keyword">int</span> u<span class="token punctuation">,</span> <span class="token keyword">int</span> v<span class="token punctuation">,</span> <span class="token keyword">int</span> w<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        to<span class="token punctuation">[</span>ecnt<span class="token punctuation">]</span> <span class="token operator">=</span> v<span class="token punctuation">;</span>        wight<span class="token punctuation">[</span>ecnt<span class="token punctuation">]</span> <span class="token operator">=</span> w<span class="token punctuation">;</span>        nxt<span class="token punctuation">[</span>ecnt<span class="token punctuation">]</span> <span class="token operator">=</span> head<span class="token punctuation">[</span>u<span class="token punctuation">]</span><span class="token punctuation">;</span>        head<span class="token punctuation">[</span>u<span class="token punctuation">]</span> <span class="token operator">=</span> ecnt<span class="token punctuation">;</span>        ecnt<span class="token operator">++</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token comment">// Add an undirectional edge</span>    <span class="token keyword">void</span> <span class="token function">addBiEdge</span><span class="token punctuation">(</span><span class="token keyword">int</span> u<span class="token punctuation">,</span> <span class="token keyword">int</span> v<span class="token punctuation">,</span> <span class="token keyword">int</span> w<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token function">addEdge</span><span class="token punctuation">(</span>u<span class="token punctuation">,</span> v<span class="token punctuation">,</span> w<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token function">addEdge</span><span class="token punctuation">(</span>v<span class="token punctuation">,</span> u<span class="token punctuation">,</span> w<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">int</span> <span class="token function">wightBetween</span><span class="token punctuation">(</span><span class="token keyword">int</span> a<span class="token punctuation">,</span> <span class="token keyword">int</span> b<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>a <span class="token operator">==</span> b<span class="token punctuation">)</span>            <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> e <span class="token operator">=</span> head<span class="token punctuation">[</span>a<span class="token punctuation">]</span><span class="token punctuation">;</span> e<span class="token operator">!=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span> e <span class="token operator">=</span> nxt<span class="token punctuation">[</span>e<span class="token punctuation">]</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token keyword">if</span><span class="token punctuation">(</span>to<span class="token punctuation">[</span>e<span class="token punctuation">]</span> <span class="token operator">==</span> b<span class="token punctuation">)</span>                <span class="token keyword">return</span> wight<span class="token punctuation">[</span>e<span class="token punctuation">]</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token keyword">return</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">void</span> <span class="token function">bfs</span><span class="token punctuation">(</span>CallbackFunctor<span class="token operator">&amp;</span> func<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        queue<span class="token operator">&lt;</span>Node<span class="token operator">&gt;</span> Q<span class="token punctuation">;</span>        Node tem<span class="token punctuation">;</span>        tem<span class="token punctuation">.</span>i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>        tem<span class="token punctuation">.</span>from <span class="token operator">=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span>        tem<span class="token punctuation">.</span>edge <span class="token operator">=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span>        tem<span class="token punctuation">.</span>totalWight <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>        tem<span class="token punctuation">.</span>path<span class="token punctuation">.</span><span class="token function">push_back</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        Q<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>tem<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">while</span><span class="token punctuation">(</span><span class="token operator">!</span>Q<span class="token punctuation">.</span><span class="token function">empty</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            Node t <span class="token operator">=</span> Q<span class="token punctuation">.</span><span class="token function">front</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> Q<span class="token punctuation">.</span><span class="token function">pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token function">func</span><span class="token punctuation">(</span><span class="token operator">*</span><span class="token keyword">this</span><span class="token punctuation">,</span> t<span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> e <span class="token operator">=</span> head<span class="token punctuation">[</span>t<span class="token punctuation">.</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span> e<span class="token operator">!=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span> e <span class="token operator">=</span> nxt<span class="token punctuation">[</span>e<span class="token punctuation">]</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                <span class="token keyword">if</span><span class="token punctuation">(</span>to<span class="token punctuation">[</span>e<span class="token punctuation">]</span> <span class="token operator">==</span> t<span class="token punctuation">.</span>from<span class="token punctuation">)</span>                    <span class="token keyword">continue</span><span class="token punctuation">;</span>                Node t2<span class="token punctuation">;</span>                t2<span class="token punctuation">.</span>i <span class="token operator">=</span> to<span class="token punctuation">[</span>e<span class="token punctuation">]</span><span class="token punctuation">;</span>                t2<span class="token punctuation">.</span>from <span class="token operator">=</span> t<span class="token punctuation">.</span>i<span class="token punctuation">;</span>                t2<span class="token punctuation">.</span>edge <span class="token operator">=</span> e<span class="token punctuation">;</span>                t2<span class="token punctuation">.</span>totalWight <span class="token operator">=</span> t<span class="token punctuation">.</span>totalWight <span class="token operator">+</span> wight<span class="token punctuation">[</span>e<span class="token punctuation">]</span><span class="token punctuation">;</span>                t2<span class="token punctuation">.</span>path <span class="token operator">=</span> t<span class="token punctuation">.</span>path<span class="token punctuation">;</span> t2<span class="token punctuation">.</span>path<span class="token punctuation">.</span><span class="token function">push_back</span><span class="token punctuation">(</span>t2<span class="token punctuation">.</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span>                <span class="token keyword">if</span><span class="token punctuation">(</span>func<span class="token punctuation">.</span><span class="token function">shouldExtend</span><span class="token punctuation">(</span><span class="token operator">*</span><span class="token keyword">this</span><span class="token punctuation">,</span> t2<span class="token punctuation">)</span><span class="token punctuation">)</span>                <span class="token punctuation">{</span>                    Q<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>t2<span class="token punctuation">)</span><span class="token punctuation">;</span>                <span class="token punctuation">}</span>            <span class="token punctuation">}</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token keyword">void</span> <span class="token function">dfs</span><span class="token punctuation">(</span>CallbackFunctor<span class="token operator">&amp;</span> func<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        stack<span class="token operator">&lt;</span>Node<span class="token operator">&gt;</span> Q<span class="token punctuation">;</span>        Node tem<span class="token punctuation">;</span>        tem<span class="token punctuation">.</span>i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>        tem<span class="token punctuation">.</span>from <span class="token operator">=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span>        tem<span class="token punctuation">.</span>edge <span class="token operator">=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span>        tem<span class="token punctuation">.</span>totalWight <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>        tem<span class="token punctuation">.</span>path<span class="token punctuation">.</span><span class="token function">push_back</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        Q<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>tem<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">while</span><span class="token punctuation">(</span><span class="token operator">!</span>Q<span class="token punctuation">.</span><span class="token function">empty</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            Node t <span class="token operator">=</span> Q<span class="token punctuation">.</span><span class="token function">top</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> Q<span class="token punctuation">.</span><span class="token function">pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token function">func</span><span class="token punctuation">(</span><span class="token operator">*</span><span class="token keyword">this</span><span class="token punctuation">,</span> t<span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> e <span class="token operator">=</span> head<span class="token punctuation">[</span>t<span class="token punctuation">.</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span> e<span class="token operator">!=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span> e <span class="token operator">=</span> nxt<span class="token punctuation">[</span>e<span class="token punctuation">]</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                <span class="token keyword">if</span><span class="token punctuation">(</span>to<span class="token punctuation">[</span>e<span class="token punctuation">]</span> <span class="token operator">==</span> t<span class="token punctuation">.</span>from<span class="token punctuation">)</span>                    <span class="token keyword">continue</span><span class="token punctuation">;</span>                Node t2<span class="token punctuation">;</span>                t2<span class="token punctuation">.</span>i <span class="token operator">=</span> to<span class="token punctuation">[</span>e<span class="token punctuation">]</span><span class="token punctuation">;</span>                t2<span class="token punctuation">.</span>from <span class="token operator">=</span> t<span class="token punctuation">.</span>i<span class="token punctuation">;</span>                t2<span class="token punctuation">.</span>edge <span class="token operator">=</span> e<span class="token punctuation">;</span>                t2<span class="token punctuation">.</span>totalWight <span class="token operator">=</span> t<span class="token punctuation">.</span>totalWight <span class="token operator">+</span> wight<span class="token punctuation">[</span>e<span class="token punctuation">]</span><span class="token punctuation">;</span>                t2<span class="token punctuation">.</span>path <span class="token operator">=</span> t<span class="token punctuation">.</span>path<span class="token punctuation">;</span> t2<span class="token punctuation">.</span>path<span class="token punctuation">.</span><span class="token function">push_back</span><span class="token punctuation">(</span>t2<span class="token punctuation">.</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span>                <span class="token keyword">if</span><span class="token punctuation">(</span>func<span class="token punctuation">.</span><span class="token function">shouldExtend</span><span class="token punctuation">(</span><span class="token operator">*</span><span class="token keyword">this</span><span class="token punctuation">,</span> t2<span class="token punctuation">)</span><span class="token punctuation">)</span>                <span class="token punctuation">{</span>                    Q<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>t2<span class="token punctuation">)</span><span class="token punctuation">;</span>                <span class="token punctuation">}</span>            <span class="token punctuation">}</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>附带一个测试小程序</p><pre class="line-numbers language-cpp" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="d01c4a3f" class="language-cpp" data-prism-hydrate="{&quot;element&quot;:&quot;d01c4a3f&quot;,&quot;language&quot;:&quot;cpp&quot;,&quot;code&quot;:&quot;int n, m;\nForwardStarWGraph g;\n\nstruct Routine : CallbackFunctor\n{\n    virtual bool shouldExtend (ForwardStarWGraph\u0026 graph, Node&amp; toExtend)\n    {\n        return true;\n    }\n\n    virtual bool operator() (ForwardStarWGraph&amp; graph, Node&amp; curr)\n    {\n        cout\u003c<curr.i+1<<endl;\n    }\n};\n\nint main()\n{\n#ifdef ACM_LOCAL\n    freopen(\&quot;input.txt\&quot;, \&quot;r\&quot;, stdin);\n    //freopen(\&quot;output.txt\&quot;, \&quot;w\&quot;, stdout);\n#endif // ACM_LOCAL\n    while(scanf(\&quot;%d %d\&quot;, &amp;n, &amp;m) != EOF)\n    {\n        g.graphInit(n, m);\n        for(int i = 0; i!= m; i++)\n        {\n            int a, b, w;\n            scanf(\&quot;%d%d%d\&quot;, &amp;a, &amp;b, &amp;w);\n            g.addBiEdge(a-1, b-1, w);\n        }\n        Routine routine;\n        g.bfs(routine);\n    }\n\n\n#ifdef ACM_LOCAL\n    printf(\&quot;Used time: %lf\\n\&quot;, clock() / (double) CLOCKS_PER_SEC);\n#endif // ACM_LOCAL\n    return 0;\n}&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;<span class=\&quot;token keyword\&quot;\u003eint</span> n<span class=\&quot;token punctuation\&quot;>,</span> m<span class=\&quot;token punctuation\&quot;>;</span>\nForwardStarWGraph g<span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>struct</span> <span class=\&quot;token class-name\&quot;>Routine</span> <span class=\&quot;token operator\&quot;>:</span> <span class=\&quot;token base-clause\&quot;><span class=\&quot;token class-name\&quot;>CallbackFunctor</span></span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>virtual</span> <span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token function\&quot;>shouldExtend</span> <span class=\&quot;token punctuation\&quot;>(</span>ForwardStarWGraph<span class=\&quot;token operator\&quot;>&amp;amp;</span> graph<span class=\&quot;token punctuation\&quot;>,</span> Node<span class=\&quot;token operator\&quot;>&amp;amp;</span> toExtend<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>virtual</span> <span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token keyword\&quot;>operator</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token punctuation\&quot;>(</span>ForwardStarWGraph<span class=\&quot;token operator\&quot;>&amp;amp;</span> graph<span class=\&quot;token punctuation\&quot;>,</span> Node<span class=\&quot;token operator\&quot;>&amp;amp;</span> curr<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        cout<span class=\&quot;token operator\&quot;>&amp;lt;&amp;lt;</span>curr<span class=\&quot;token punctuation\&quot;>.</span>i<span class=\&quot;token operator\&quot;>+</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token operator\&quot;>&amp;lt;&amp;lt;</span>endl<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>main</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>ifdef</span> <span class=\&quot;token expression\&quot;>ACM_LOCAL</span></span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;input.txt\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;r\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdin</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token comment\&quot;>//freopen(\&quot;output.txt\&quot;, \&quot;w\&quot;, stdout);</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>endif</span> <span class=\&quot;token comment\&quot;>// ACM_LOCAL</span></span>\n    <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d %d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>n<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>m<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token constant\&quot;>EOF</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        g<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>graphInit</span><span class=\&quot;token punctuation\&quot;>(</span>n<span class=\&quot;token punctuation\&quot;>,</span> m<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> m<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token keyword\&quot;>int</span> a<span class=\&quot;token punctuation\&quot;>,</span> b<span class=\&quot;token punctuation\&quot;>,</span> w<span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d%d%d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>a<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>b<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>w<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            g<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>addBiEdge</span><span class=\&quot;token punctuation\&quot;>(</span>a<span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> b<span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> w<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n        Routine routine<span class=\&quot;token punctuation\&quot;>;</span>\n        g<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>bfs</span><span class=\&quot;token punctuation\&quot;>(</span>routine<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>ifdef</span> <span class=\&quot;token expression\&quot;>ACM_LOCAL</span></span>\n    <span class=\&quot;token function\&quot;>printf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;Used time: %lf\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token function\&quot;>clock</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>/</span> <span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>double</span><span class=\&quot;token punctuation\&quot;>)</span> CLOCKS_PER_SEC<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>endif</span> <span class=\&quot;token comment\&quot;>// ACM_LOCAL</span></span>\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>&quot;,&quot;plugins&quot;:{&quot;lineNumbers&quot;:true}}"><span class="token keyword">int</span> n<span class="token punctuation">,</span> m<span class="token punctuation">;</span>ForwardStarWGraph g<span class="token punctuation">;</span><span class="token keyword">struct</span> <span class="token class-name">Routine</span> <span class="token operator">:</span> <span class="token base-clause"><span class="token class-name">CallbackFunctor</span></span><span class="token punctuation">{</span>    <span class="token keyword">virtual</span> <span class="token keyword">bool</span> <span class="token function">shouldExtend</span> <span class="token punctuation">(</span>ForwardStarWGraph<span class="token operator">&amp;</span> graph<span class="token punctuation">,</span> Node<span class="token operator">&amp;</span> toExtend<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">virtual</span> <span class="token keyword">bool</span> <span class="token keyword">operator</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">(</span>ForwardStarWGraph<span class="token operator">&amp;</span> graph<span class="token punctuation">,</span> Node<span class="token operator">&amp;</span> curr<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        cout<span class="token operator">&lt;&lt;</span>curr<span class="token punctuation">.</span>i<span class="token operator">+</span><span class="token number">1</span><span class="token operator">&lt;&lt;</span>endl<span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">;</span><span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">ifdef</span> <span class="token expression">ACM_LOCAL</span></span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"input.txt"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">,</span> <span class="token constant">stdin</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token comment">//freopen("output.txt", "w", stdout);</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">endif</span> <span class="token comment">// ACM_LOCAL</span></span>    <span class="token keyword">while</span><span class="token punctuation">(</span><span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d %d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>n<span class="token punctuation">,</span> <span class="token operator">&amp;</span>m<span class="token punctuation">)</span> <span class="token operator">!=</span> <span class="token constant">EOF</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        g<span class="token punctuation">.</span><span class="token function">graphInit</span><span class="token punctuation">(</span>n<span class="token punctuation">,</span> m<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> m<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token keyword">int</span> a<span class="token punctuation">,</span> b<span class="token punctuation">,</span> w<span class="token punctuation">;</span>            <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d%d%d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>a<span class="token punctuation">,</span> <span class="token operator">&amp;</span>b<span class="token punctuation">,</span> <span class="token operator">&amp;</span>w<span class="token punctuation">)</span><span class="token punctuation">;</span>            g<span class="token punctuation">.</span><span class="token function">addBiEdge</span><span class="token punctuation">(</span>a<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> b<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> w<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        Routine routine<span class="token punctuation">;</span>        g<span class="token punctuation">.</span><span class="token function">bfs</span><span class="token punctuation">(</span>routine<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">ifdef</span> <span class="token expression">ACM_LOCAL</span></span>    <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"Used time: %lf\n"</span><span class="token punctuation">,</span> <span class="token function">clock</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token keyword">double</span><span class="token punctuation">)</span> CLOCKS_PER_SEC<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">endif</span> <span class="token comment">// ACM_LOCAL</span></span>    <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>]]></content>
    
    
    <summary type="html">&lt;p&gt;使用前向星方法（应该是吧？我着实不确定这种我不知道从哪看到之后一直在用的存储方法究竟叫什么= =）存储的带权图，实现了通用的DFS和BFS算法，可以通过函数对象使用。&lt;/p&gt;
&lt;p&gt;正好这两天复习算法，所以整理了一下。有些时候有这么一个模板还是挺方便的说。&lt;/p&gt;
&lt;p&gt;直接上代码了&lt;/p&gt;
&lt;pre class=&quot;line-numbers language-cpp&quot; style=&quot;max-height: 30em&quot; data-prismjs-copy-timeout=&quot;500&quot; tabindex=&quot;0&quot;&gt;&lt;code id=&quot;ed008e3d&quot; class=&quot;language-cpp&quot; data-prism-hydrate=&quot;{&amp;quot;element&amp;quot;:&amp;quot;ed008e3d&amp;quot;,&amp;quot;language&amp;quot;:&amp;quot;cpp&amp;quot;,&amp;quot;code&amp;quot;:&amp;quot;struct ForwardStarWGraph;&#92;nstruct Node;&#92;n&#92;nstruct CallbackFunctor&#92;n{&#92;n    virtual bool shouldExtend(ForwardStarWGraph&#92;u0026 graph, Node&amp;amp; toExtend) = 0;&#92;n    virtual bool operator() (ForwardStarWGraph&amp;amp; graph, Node&amp;amp; curr) = 0;&#92;n};&#92;n&#92;nstruct Node&#92;n{&#92;n    int i;&#92;n    int from;&#92;n    int edge;&#92;n    int totalWight;&#92;n    vector&#92;u003cint&#92;u003e path;&#92;n};&#92;n&#92;nconst int N = 20; // max vertex conut&#92;nconst int M = N*N; // max edge count&#92;n&#92;nstruct ForwardStarWGraph&#92;n{&#92;n    int to[M], nxt[M], head[N];&#92;n    int wight[M];&#92;n    int ecnt;&#92;n    // Actual vertex number&#92;n    int n;&#92;n&#92;n    void graphInit(int nn, int m)&#92;n    {&#92;n        ecnt = 0;&#92;n        n = nn;&#92;n        memset(head, -1, sizeof(head));&#92;n    }&#92;n&#92;n    // Add an edge, vertex counts from 0&#92;n    void addEdge(int u, int v, int w)&#92;n    {&#92;n        to[ecnt] = v;&#92;n        wight[ecnt] = w;&#92;n        nxt[ecnt] = head[u];&#92;n        head[u] = ecnt;&#92;n        ecnt++;&#92;n    }&#92;n&#92;n    // Add an undirectional edge&#92;n    void addBiEdge(int u, int v, int w)&#92;n    {&#92;n        addEdge(u, v, w);&#92;n        addEdge(v, u, w);&#92;n    }&#92;n&#92;n    int wightBetween(int a, int b)&#92;n    {&#92;n        if(a == b)&#92;n            return 0;&#92;n        for(int e = head[a]; e!= -1; e = nxt[e])&#92;n        {&#92;n            if(to[e] == b)&#92;n                return wight[e];&#92;n        }&#92;n        return -1;&#92;n    }&#92;n&#92;n    void bfs(CallbackFunctor&amp;amp; func)&#92;n    {&#92;n        queue&lt;Node&gt; Q;&#92;n&#92;n        Node tem;&#92;n        tem.i = 0;&#92;n        tem.from = -1;&#92;n        tem.edge = -1;&#92;n        tem.totalWight = 0;&#92;n        tem.path.push_back(0);&#92;n        Q.push(tem);&#92;n&#92;n        while(!Q.empty())&#92;n        {&#92;n            Node t = Q.front(); Q.pop();&#92;n&#92;n            func(*this, t);&#92;n&#92;n            for(int e = head[t.i]; e!= -1; e = nxt[e])&#92;n            {&#92;n                if(to[e] == t.from)&#92;n                    continue;&#92;n                Node t2;&#92;n                t2.i = to[e];&#92;n                t2.from = t.i;&#92;n                t2.edge = e;&#92;n                t2.totalWight = t.totalWight + wight[e];&#92;n                t2.path = t.path; t2.path.push_back(t2.i);&#92;n                if(func.shouldExtend(*this, t2))&#92;n                {&#92;n                    Q.push(t2);&#92;n                }&#92;n            }&#92;n        }&#92;n    }&#92;n&#92;n    void dfs(CallbackFunctor&amp;amp; func)&#92;n    {&#92;n        stack&lt;Node&gt; Q;&#92;n&#92;n        Node tem;&#92;n        tem.i = 0;&#92;n        tem.from = -1;&#92;n        tem.edge = -1;&#92;n        tem.totalWight = 0;&#92;n        tem.path.push_back(0);&#92;n        Q.push(tem);&#92;n&#92;n        while(!Q.empty())&#92;n        {&#92;n            Node t = Q.top(); Q.pop();&#92;n&#92;n            func(*this, t);&#92;n&#92;n            for(int e = head[t.i]; e!= -1; e = nxt[e])&#92;n            {&#92;n                if(to[e] == t.from)&#92;n                    continue;&#92;n                Node t2;&#92;n                t2.i = to[e];&#92;n                t2.from = t.i;&#92;n                t2.edge = e;&#92;n                t2.totalWight = t.totalWight + wight[e];&#92;n                t2.path = t.path; t2.path.push_back(t2.i);&#92;n                if(func.shouldExtend(*this, t2))&#92;n                {&#92;n                    Q.push(t2);&#92;n                }&#92;n            }&#92;n        }&#92;n    }&#92;n};&amp;quot;,&amp;quot;settings&amp;quot;:{},&amp;quot;vars&amp;quot;:{&amp;quot;command-line&amp;quot;:{&amp;quot;complete&amp;quot;:true}},&amp;quot;highlightedCode&amp;quot;:&amp;quot;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;struct&lt;/span&gt; &lt;span class=&#92;&amp;quot;token class-name&#92;&amp;quot;&gt;ForwardStarWGraph&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;struct&lt;/span&gt; &lt;span class=&#92;&amp;quot;token class-name&#92;&amp;quot;&gt;Node&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;struct&lt;/span&gt; &lt;span class=&#92;&amp;quot;token class-name&#92;&amp;quot;&gt;CallbackFunctor&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;virtual&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;bool&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;shouldExtend&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;ForwardStarWGraph&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; graph&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; Node&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; toExtend&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;virtual&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;bool&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;operator&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;ForwardStarWGraph&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; graph&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; Node&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; curr&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;struct&lt;/span&gt; &lt;span class=&#92;&amp;quot;token class-name&#92;&amp;quot;&gt;Node&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; from&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; edge&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; totalWight&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    vector&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt; path&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; N &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;20&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// max vertex conut&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; M &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; N&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// max edge count&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;struct&lt;/span&gt; &lt;span class=&#92;&amp;quot;token class-name&#92;&amp;quot;&gt;ForwardStarWGraph&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; to&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;M&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; nxt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;M&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; head&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; wight&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;M&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; ecnt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// Actual vertex number&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;graphInit&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; nn&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; m&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        ecnt &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        n &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; nn&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;memset&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;head&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;sizeof&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;head&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// Add an edge, vertex counts from 0&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;addEdge&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        to&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;ecnt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        wight&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;ecnt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        nxt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;ecnt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; head&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        head&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; ecnt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        ecnt&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// Add an undirectional edge&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;addBiEdge&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;addEdge&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;addEdge&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;wightBetween&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;a &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; e &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; head&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; e&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; e &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; nxt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;to&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; wight&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;bfs&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;CallbackFunctor&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; func&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        queue&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt;Node&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt; Q&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n        Node tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;from &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;edge &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;totalWight &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;path&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;push_back&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        Q&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;push&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;while&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!&lt;/span&gt;Q&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;empty&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            Node t &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; Q&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;front&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; Q&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;pop&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n            &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;func&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;this&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; e &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; head&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; e&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; e &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; nxt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;to&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;from&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;continue&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                Node t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; to&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;from &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;edge &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;totalWight &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;totalWight &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; wight&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;path &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;path&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;path&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;push_back&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;func&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;shouldExtend&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;this&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                    Q&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;push&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;dfs&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;CallbackFunctor&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; func&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        stack&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt;Node&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt; Q&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n        Node tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;from &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;edge &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;totalWight &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;path&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;push_back&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        Q&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;push&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;while&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!&lt;/span&gt;Q&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;empty&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            Node t &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; Q&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;top&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; Q&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;pop&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n            &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;func&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;this&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; e &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; head&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; e&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; e &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; nxt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;to&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;from&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;continue&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                Node t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; to&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;from &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;edge &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;totalWight &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;totalWight &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; wight&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;path &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;path&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;path&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;push_back&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;func&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;shouldExtend&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;this&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                    Q&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;push&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;t2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&amp;quot;,&amp;quot;plugins&amp;quot;:{&amp;quot;lineNumbers&amp;quot;:true}}&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ForwardStarWGraph&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Node&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CallbackFunctor&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;virtual&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;shouldExtend&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ForwardStarWGraph&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; graph&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Node&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; toExtend&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;virtual&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;operator&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ForwardStarWGraph&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; graph&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Node&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; curr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Node&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; from&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; edge&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; totalWight&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    vector&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; path&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; N &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// max vertex conut&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; M &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; N&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// max edge count&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ForwardStarWGraph&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; to&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;M&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; nxt&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;M&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; head&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; wight&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;M&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; ecnt&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Actual vertex number&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;graphInit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; nn&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; m&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        ecnt &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        n &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; nn&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;memset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;head&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;head&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Add an edge, vertex counts from 0&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;addEdge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; u&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        to&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;ecnt&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        wight&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;ecnt&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        nxt&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;ecnt&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; head&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;u&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        head&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;u&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; ecnt&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        ecnt&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// Add an undirectional edge&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;addBiEdge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; u&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;addEdge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;u&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;addEdge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; u&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;wightBetween&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; e &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; head&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; e&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; e &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; nxt&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;to&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; wight&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;bfs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;CallbackFunctor&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; func&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        queue&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;Node&lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; Q&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        Node tem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        tem&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        tem&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;from &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        tem&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        tem&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;totalWight &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        tem&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;push_back&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Q&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tem&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;Q&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;empty&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            Node t &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Q&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;front&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; Q&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;pop&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

            &lt;span class=&quot;token function&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

            &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; e &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; head&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; e&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; e &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; nxt&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;to&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;from&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                    &lt;span class=&quot;token keyword&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                Node t2&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                t2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; to&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                t2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;from &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                t2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; e&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                t2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;totalWight &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;totalWight &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; wight&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                t2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;path &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; t2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;push_back&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;func&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;shouldExtend&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; t2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    Q&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;dfs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;CallbackFunctor&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; func&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        stack&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;Node&lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; Q&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        Node tem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        tem&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        tem&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;from &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        tem&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        tem&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;totalWight &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        tem&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;push_back&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Q&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tem&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;Q&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;empty&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            Node t &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Q&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; Q&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;pop&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

            &lt;span class=&quot;token function&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

            &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; e &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; head&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; e&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; e &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; nxt&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;to&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;from&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                    &lt;span class=&quot;token keyword&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                Node t2&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                t2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; to&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                t2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;from &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                t2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;edge &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; e&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                t2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;totalWight &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;totalWight &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; wight&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                t2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;path &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; t2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;push_back&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;func&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;shouldExtend&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; t2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    Q&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;附带一个测试小程序&lt;/p&gt;</summary>
    
    
    
    
    <category term="ACM" scheme="https://unlimited-code.works/tags/acm/"/>
    
    <category term="BFS" scheme="https://unlimited-code.works/tags/bfs/"/>
    
    <category term="DFS" scheme="https://unlimited-code.works/tags/dfs/"/>
    
    <category term="ForwardStar" scheme="https://unlimited-code.works/tags/forwardstar/"/>
    
    <category term="Functor" scheme="https://unlimited-code.works/tags/functor/"/>
    
  </entry>
  
  <entry>
    <title>USACO 3.1.4 Shaping Regions</title>
    <link href="https://unlimited-code.works/blog/2013/02/16/usaco-3-1-4/"/>
    <id>https://unlimited-code.works/blog/2013/02/16/usaco-3-1-4/</id>
    <published>2013-02-17T06:19:00.000Z</published>
    <updated>2025-08-09T21:29:05.000Z</updated>
    
    <content type="html"><![CDATA[<p>比较基础的矩形切割，是POJ 2528 Mayor’s posters的二维版。</p><p>还是要注意边缘的情况，比如当(0,8)(18,18) 切割(18,0)(19,19)的时候，结果应该是得到三个矩形</p><ul><li>(18,19)(18,19) --&gt; 面积为1</li><li>(19,0)(19,19) --&gt; 面积为20</li><li>(18,0)(18,7) --&gt; 面积为8</li></ul><p>恩，其实我一直没搞懂为啥给数据的时候llx和lly是真正的坐标值，而urx和ury却必须减一之后再用…</p><pre class="line-numbers language-cpp" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="caa8d63e" class="language-cpp" data-prism-hydrate="{&quot;element&quot;:&quot;caa8d63e&quot;,&quot;language&quot;:&quot;cpp&quot;,&quot;code&quot;:&quot;/*\nID: xjtuacm1\nPROG: rect1\nLANG: C++\n*/\n#include\u003ciostream\u003e\n#include<stack>\n#include<cstring>\n#include<cstdio>\n#include<queue>\n#include<algorithm>\n#include<set>\n#include<map>\n#include<vector>\n#include<cmath>\nusing namespace std;\nconst int M = 100000;\nconst int N = 1000;\n\nstruct rect\n{\n    int llx, lly;\n    int urx, ury;\n    int color;\n    rect(int lx = 0, int ly = 0, int rx = 0, int ry = 0, int c = 0)\n    : llx(lx), lly(ly), urx(rx), ury(ry), color(c) {}\n\n    int S()\n    {\n        return (urx - llx + 1) * (ury - lly + 1);\n    }\n}rects[M], cur;\nint tot;\n\ninline bool cross(const rect\u0026 r1, const rect&amp; r2)\n{\n    return !(\n             (r1.llx > r2.urx)\n             || (r1.urx < r2.llx)\n             || (r1.lly > r2.ury)\n             || (r1.ury < r2.lly));\n\n}\n\ninline void add(const rect&amp; t)\n{\n    rects[tot++] = t;\n}\n\ninline void del(int idx)\n{\n    rects[idx] = rects[--tot];\n}\n\nvoid cut(const rect&amp; t, bool vertical = false)\n{\n    int k1, k2;\n    rect tem = t;\n    if(vertical)\n    {\n        k1 = max(t.lly, cur.lly);\n        k2 = min(t.ury, cur.ury);\n        if(t.lly < k1)\n        {\n            tem.ury = k1 - 1;\n            add(tem);\n        }\n        if(k2 < t.ury)\n        {\n            tem = t, tem.lly = k2 + 1;\n            add(tem);\n        }\n    }\n    else\n    {\n        k1 = max(t.llx, cur.llx);\n        k2 = min(t.urx, cur.urx);\n        if(t.llx < k1)\n        {\n            tem.urx = k1 - 1;\n            add(tem);\n        }\n        if(t.urx > k2)\n        {\n            tem = t, tem.llx = k2 + 1;\n            add(tem);\n        }\n        tem = t, tem.llx = k1 , tem.urx = k2;\n        cut(tem, true);\n    }\n}\n\n\nint main(int argc, char *argv[])\n{\n#ifdef ACM_LOCAL // Local\n    freopen(\&quot;in\&quot;, \&quot;r\&quot;, stdin);\n#else\n    #ifndef  ONLINE_JUDGE // not HDOJ / POJ\n    freopen(\&quot;rect1.in\&quot;, \&quot;r\&quot;, stdin);\n    freopen(\&quot;rect1.out\&quot;, \&quot;w\&quot;, stdout);\n    #endif\n#endif\n\n    int a, b, n;\n    scanf(\&quot;%d %d %d\&quot;, &amp;a, &amp;b, &amp;n);\n    add(rect(0, 0, a-1, b-1, 1)); // add the white sheet first.\n\n    while(n--)\n    {\n        scanf(\&quot;%d %d %d %d %d\&quot;, &amp;cur.llx, &amp;cur.lly, &amp;cur.urx, &amp;cur.ury, &amp;cur.color);\n        cur.urx--, cur.ury--;\n\n        for(int i = tot-1; i>= 0; i--)\n        {\n            if(cross(cur, rects[i]))\n            {\n                cut(rects[i]);\n                del(i);\n            }\n        }\n        add(cur);\n    }\n\n    map<int, int> cnt;\n    for(int i = 0; i!= tot; i++)\n    {\n        cnt[rects[i].color] += rects[i].S();\n    }\n\n    for(map<int, int>::iterator it = cnt.begin(); it!= cnt.end(); it++)\n    {\n        if(it->second)\n            printf(\&quot;%d %d\\n\&quot;, it->first, it->second);\n    }\n\n    return 0;\n}&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;<span class=\&quot;token comment\&quot;>/*\nID: xjtuacm1\nPROG: rect1\nLANG: C++\n*/</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;iostream></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;stack></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstring></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstdio></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;queue></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;algorithm></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;set></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;map></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;vector></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cmath></span></span>\n<span class=\&quot;token keyword\&quot;>using</span> <span class=\&quot;token keyword\&quot;>namespace</span> std<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> M <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>100000</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> N <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1000</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>struct</span> <span class=\&quot;token class-name\&quot;>rect</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>int</span> llx<span class=\&quot;token punctuation\&quot;>,</span> lly<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>int</span> urx<span class=\&quot;token punctuation\&quot;>,</span> ury<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>int</span> color<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>rect</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> lx <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> ly <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> rx <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> ry <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> c <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token operator\&quot;>:</span> <span class=\&quot;token function\&quot;>llx</span><span class=\&quot;token punctuation\&quot;>(</span>lx<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token function\&quot;>lly</span><span class=\&quot;token punctuation\&quot;>(</span>ly<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token function\&quot;>urx</span><span class=\&quot;token punctuation\&quot;>(</span>rx<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token function\&quot;>ury</span><span class=\&quot;token punctuation\&quot;>(</span>ry<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token function\&quot;>color</span><span class=\&quot;token punctuation\&quot;>(</span>c<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token punctuation\&quot;>{</span><span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>S</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token punctuation\&quot;>(</span>urx <span class=\&quot;token operator\&quot;>-</span> llx <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>*</span> <span class=\&quot;token punctuation\&quot;>(</span>ury <span class=\&quot;token operator\&quot;>-</span> lly <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span>rects<span class=\&quot;token punctuation\&quot;>[</span>M<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> cur<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> tot<span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>inline</span> <span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token function\&quot;>cross</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>const</span> rect<span class=\&quot;token operator\&quot;>&amp;amp;</span> r1<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>const</span> rect<span class=\&quot;token operator\&quot;>&amp;amp;</span> r2<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token operator\&quot;>!</span><span class=\&quot;token punctuation\&quot;>(</span>\n             <span class=\&quot;token punctuation\&quot;>(</span>r1<span class=\&quot;token punctuation\&quot;>.</span>llx <span class=\&quot;token operator\&quot;>></span> r2<span class=\&quot;token punctuation\&quot;>.</span>urx<span class=\&quot;token punctuation\&quot;>)</span>\n             <span class=\&quot;token operator\&quot;>||</span> <span class=\&quot;token punctuation\&quot;>(</span>r1<span class=\&quot;token punctuation\&quot;>.</span>urx <span class=\&quot;token operator\&quot;>&amp;lt;</span> r2<span class=\&quot;token punctuation\&quot;>.</span>llx<span class=\&quot;token punctuation\&quot;>)</span>\n             <span class=\&quot;token operator\&quot;>||</span> <span class=\&quot;token punctuation\&quot;>(</span>r1<span class=\&quot;token punctuation\&quot;>.</span>lly <span class=\&quot;token operator\&quot;>></span> r2<span class=\&quot;token punctuation\&quot;>.</span>ury<span class=\&quot;token punctuation\&quot;>)</span>\n             <span class=\&quot;token operator\&quot;>||</span> <span class=\&quot;token punctuation\&quot;>(</span>r1<span class=\&quot;token punctuation\&quot;>.</span>ury <span class=\&quot;token operator\&quot;>&amp;lt;</span> r2<span class=\&quot;token punctuation\&quot;>.</span>lly<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>inline</span> <span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>add</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>const</span> rect<span class=\&quot;token operator\&quot;>&amp;amp;</span> t<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    rects<span class=\&quot;token punctuation\&quot;>[</span>tot<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> t<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>inline</span> <span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>del</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> idx<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    rects<span class=\&quot;token punctuation\&quot;>[</span>idx<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> rects<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token operator\&quot;>--</span>tot<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>cut</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>const</span> rect<span class=\&quot;token operator\&quot;>&amp;amp;</span> t<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>bool</span> vertical <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token boolean\&quot;>false</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>int</span> k1<span class=\&quot;token punctuation\&quot;>,</span> k2<span class=\&quot;token punctuation\&quot;>;</span>\n    rect tem <span class=\&quot;token operator\&quot;>=</span> t<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>vertical<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        k1 <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>max</span><span class=\&quot;token punctuation\&quot;>(</span>t<span class=\&quot;token punctuation\&quot;>.</span>lly<span class=\&quot;token punctuation\&quot;>,</span> cur<span class=\&quot;token punctuation\&quot;>.</span>lly<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        k2 <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>min</span><span class=\&quot;token punctuation\&quot;>(</span>t<span class=\&quot;token punctuation\&quot;>.</span>ury<span class=\&quot;token punctuation\&quot;>,</span> cur<span class=\&quot;token punctuation\&quot;>.</span>ury<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>t<span class=\&quot;token punctuation\&quot;>.</span>lly <span class=\&quot;token operator\&quot;>&amp;lt;</span> k1<span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            tem<span class=\&quot;token punctuation\&quot;>.</span>ury <span class=\&quot;token operator\&quot;>=</span> k1 <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token function\&quot;>add</span><span class=\&quot;token punctuation\&quot;>(</span>tem<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>k2 <span class=\&quot;token operator\&quot;>&amp;lt;</span> t<span class=\&quot;token punctuation\&quot;>.</span>ury<span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            tem <span class=\&quot;token operator\&quot;>=</span> t<span class=\&quot;token punctuation\&quot;>,</span> tem<span class=\&quot;token punctuation\&quot;>.</span>lly <span class=\&quot;token operator\&quot;>=</span> k2 <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token function\&quot;>add</span><span class=\&quot;token punctuation\&quot;>(</span>tem<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token keyword\&quot;>else</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        k1 <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>max</span><span class=\&quot;token punctuation\&quot;>(</span>t<span class=\&quot;token punctuation\&quot;>.</span>llx<span class=\&quot;token punctuation\&quot;>,</span> cur<span class=\&quot;token punctuation\&quot;>.</span>llx<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        k2 <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>min</span><span class=\&quot;token punctuation\&quot;>(</span>t<span class=\&quot;token punctuation\&quot;>.</span>urx<span class=\&quot;token punctuation\&quot;>,</span> cur<span class=\&quot;token punctuation\&quot;>.</span>urx<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>t<span class=\&quot;token punctuation\&quot;>.</span>llx <span class=\&quot;token operator\&quot;>&amp;lt;</span> k1<span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            tem<span class=\&quot;token punctuation\&quot;>.</span>urx <span class=\&quot;token operator\&quot;>=</span> k1 <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token function\&quot;>add</span><span class=\&quot;token punctuation\&quot;>(</span>tem<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>t<span class=\&quot;token punctuation\&quot;>.</span>urx <span class=\&quot;token operator\&quot;>></span> k2<span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            tem <span class=\&quot;token operator\&quot;>=</span> t<span class=\&quot;token punctuation\&quot;>,</span> tem<span class=\&quot;token punctuation\&quot;>.</span>llx <span class=\&quot;token operator\&quot;>=</span> k2 <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token function\&quot;>add</span><span class=\&quot;token punctuation\&quot;>(</span>tem<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n        tem <span class=\&quot;token operator\&quot;>=</span> t<span class=\&quot;token punctuation\&quot;>,</span> tem<span class=\&quot;token punctuation\&quot;>.</span>llx <span class=\&quot;token operator\&quot;>=</span> k1 <span class=\&quot;token punctuation\&quot;>,</span> tem<span class=\&quot;token punctuation\&quot;>.</span>urx <span class=\&quot;token operator\&quot;>=</span> k2<span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token function\&quot;>cut</span><span class=\&quot;token punctuation\&quot;>(</span>tem<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>main</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> argc<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>char</span> <span class=\&quot;token operator\&quot;>*</span>argv<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>ifdef</span> <span class=\&quot;token expression\&quot;>ACM_LOCAL </span><span class=\&quot;token comment\&quot;>// Local</span></span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;in\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;r\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdin</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>else</span></span>\n    <span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>ifndef</span>  <span class=\&quot;token expression\&quot;>ONLINE_JUDGE </span><span class=\&quot;token comment\&quot;>// not HDOJ / POJ</span></span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;rect1.in\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;r\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdin</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;rect1.out\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;w\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdout</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>endif</span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>endif</span></span>\n\n    <span class=\&quot;token keyword\&quot;>int</span> a<span class=\&quot;token punctuation\&quot;>,</span> b<span class=\&quot;token punctuation\&quot;>,</span> n<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d %d %d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>a<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>b<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>n<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>add</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>rect</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> a<span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> b<span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span> <span class=\&quot;token comment\&quot;>// add the white sheet first.</span>\n\n    <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span>n<span class=\&quot;token operator\&quot;>--</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d %d %d %d %d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>cur<span class=\&quot;token punctuation\&quot;>.</span>llx<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>cur<span class=\&quot;token punctuation\&quot;>.</span>lly<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>cur<span class=\&quot;token punctuation\&quot;>.</span>urx<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>cur<span class=\&quot;token punctuation\&quot;>.</span>ury<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>cur<span class=\&quot;token punctuation\&quot;>.</span>color<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        cur<span class=\&quot;token punctuation\&quot;>.</span>urx<span class=\&quot;token operator\&quot;>--</span><span class=\&quot;token punctuation\&quot;>,</span> cur<span class=\&quot;token punctuation\&quot;>.</span>ury<span class=\&quot;token operator\&quot;>--</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> tot<span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>--</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>cross</span><span class=\&quot;token punctuation\&quot;>(</span>cur<span class=\&quot;token punctuation\&quot;>,</span> rects<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                <span class=\&quot;token function\&quot;>cut</span><span class=\&quot;token punctuation\&quot;>(</span>rects<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token function\&quot;>del</span><span class=\&quot;token punctuation\&quot;>(</span>i<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token function\&quot;>add</span><span class=\&quot;token punctuation\&quot;>(</span>cur<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    map<span class=\&quot;token operator\&quot;>&amp;lt;</span><span class=\&quot;token keyword\&quot;>int</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span><span class=\&quot;token operator\&quot;>></span> cnt<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> tot<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        cnt<span class=\&quot;token punctuation\&quot;>[</span>rects<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>color<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>+=</span> rects<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>S</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span>map<span class=\&quot;token operator\&quot;>&amp;lt;</span><span class=\&quot;token keyword\&quot;>int</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span><span class=\&quot;token operator\&quot;>></span><span class=\&quot;token double-colon punctuation\&quot;>::</span>iterator it <span class=\&quot;token operator\&quot;>=</span> cnt<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>begin</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span> it<span class=\&quot;token operator\&quot;>!=</span> cnt<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>end</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span> it<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>it<span class=\&quot;token operator\&quot;>-></span>second<span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token function\&quot;>printf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d %d\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> it<span class=\&quot;token operator\&quot;>-></span>first<span class=\&quot;token punctuation\&quot;>,</span> it<span class=\&quot;token operator\&quot;>-></span>second<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>&quot;,&quot;plugins&quot;:{&quot;lineNumbers&quot;:true}}"><span class="token comment">/*ID: xjtuacm1PROG: rect1LANG: C++*/</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;iostream&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;stack&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstring&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstdio&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;queue&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;algorithm&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;set&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;map&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;vector&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cmath&gt;</span></span><span class="token keyword">using</span> <span class="token keyword">namespace</span> std<span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> M <span class="token operator">=</span> <span class="token number">100000</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> N <span class="token operator">=</span> <span class="token number">1000</span><span class="token punctuation">;</span><span class="token keyword">struct</span> <span class="token class-name">rect</span><span class="token punctuation">{</span>    <span class="token keyword">int</span> llx<span class="token punctuation">,</span> lly<span class="token punctuation">;</span>    <span class="token keyword">int</span> urx<span class="token punctuation">,</span> ury<span class="token punctuation">;</span>    <span class="token keyword">int</span> color<span class="token punctuation">;</span>    <span class="token function">rect</span><span class="token punctuation">(</span><span class="token keyword">int</span> lx <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token keyword">int</span> ly <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token keyword">int</span> rx <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token keyword">int</span> ry <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token keyword">int</span> c <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">)</span>    <span class="token operator">:</span> <span class="token function">llx</span><span class="token punctuation">(</span>lx<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">lly</span><span class="token punctuation">(</span>ly<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">urx</span><span class="token punctuation">(</span>rx<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">ury</span><span class="token punctuation">(</span>ry<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">color</span><span class="token punctuation">(</span>c<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>    <span class="token keyword">int</span> <span class="token function">S</span><span class="token punctuation">(</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">return</span> <span class="token punctuation">(</span>urx <span class="token operator">-</span> llx <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token punctuation">(</span>ury <span class="token operator">-</span> lly <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span>rects<span class="token punctuation">[</span>M<span class="token punctuation">]</span><span class="token punctuation">,</span> cur<span class="token punctuation">;</span><span class="token keyword">int</span> tot<span class="token punctuation">;</span><span class="token keyword">inline</span> <span class="token keyword">bool</span> <span class="token function">cross</span><span class="token punctuation">(</span><span class="token keyword">const</span> rect<span class="token operator">&amp;</span> r1<span class="token punctuation">,</span> <span class="token keyword">const</span> rect<span class="token operator">&amp;</span> r2<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">return</span> <span class="token operator">!</span><span class="token punctuation">(</span>             <span class="token punctuation">(</span>r1<span class="token punctuation">.</span>llx <span class="token operator">&gt;</span> r2<span class="token punctuation">.</span>urx<span class="token punctuation">)</span>             <span class="token operator">||</span> <span class="token punctuation">(</span>r1<span class="token punctuation">.</span>urx <span class="token operator">&lt;</span> r2<span class="token punctuation">.</span>llx<span class="token punctuation">)</span>             <span class="token operator">||</span> <span class="token punctuation">(</span>r1<span class="token punctuation">.</span>lly <span class="token operator">&gt;</span> r2<span class="token punctuation">.</span>ury<span class="token punctuation">)</span>             <span class="token operator">||</span> <span class="token punctuation">(</span>r1<span class="token punctuation">.</span>ury <span class="token operator">&lt;</span> r2<span class="token punctuation">.</span>lly<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">inline</span> <span class="token keyword">void</span> <span class="token function">add</span><span class="token punctuation">(</span><span class="token keyword">const</span> rect<span class="token operator">&amp;</span> t<span class="token punctuation">)</span><span class="token punctuation">{</span>    rects<span class="token punctuation">[</span>tot<span class="token operator">++</span><span class="token punctuation">]</span> <span class="token operator">=</span> t<span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">inline</span> <span class="token keyword">void</span> <span class="token function">del</span><span class="token punctuation">(</span><span class="token keyword">int</span> idx<span class="token punctuation">)</span><span class="token punctuation">{</span>    rects<span class="token punctuation">[</span>idx<span class="token punctuation">]</span> <span class="token operator">=</span> rects<span class="token punctuation">[</span><span class="token operator">--</span>tot<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">void</span> <span class="token function">cut</span><span class="token punctuation">(</span><span class="token keyword">const</span> rect<span class="token operator">&amp;</span> t<span class="token punctuation">,</span> <span class="token keyword">bool</span> vertical <span class="token operator">=</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">int</span> k1<span class="token punctuation">,</span> k2<span class="token punctuation">;</span>    rect tem <span class="token operator">=</span> t<span class="token punctuation">;</span>    <span class="token keyword">if</span><span class="token punctuation">(</span>vertical<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        k1 <span class="token operator">=</span> <span class="token function">max</span><span class="token punctuation">(</span>t<span class="token punctuation">.</span>lly<span class="token punctuation">,</span> cur<span class="token punctuation">.</span>lly<span class="token punctuation">)</span><span class="token punctuation">;</span>        k2 <span class="token operator">=</span> <span class="token function">min</span><span class="token punctuation">(</span>t<span class="token punctuation">.</span>ury<span class="token punctuation">,</span> cur<span class="token punctuation">.</span>ury<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>t<span class="token punctuation">.</span>lly <span class="token operator">&lt;</span> k1<span class="token punctuation">)</span>        <span class="token punctuation">{</span>            tem<span class="token punctuation">.</span>ury <span class="token operator">=</span> k1 <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span>            <span class="token function">add</span><span class="token punctuation">(</span>tem<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>k2 <span class="token operator">&lt;</span> t<span class="token punctuation">.</span>ury<span class="token punctuation">)</span>        <span class="token punctuation">{</span>            tem <span class="token operator">=</span> t<span class="token punctuation">,</span> tem<span class="token punctuation">.</span>lly <span class="token operator">=</span> k2 <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span>            <span class="token function">add</span><span class="token punctuation">(</span>tem<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token keyword">else</span>    <span class="token punctuation">{</span>        k1 <span class="token operator">=</span> <span class="token function">max</span><span class="token punctuation">(</span>t<span class="token punctuation">.</span>llx<span class="token punctuation">,</span> cur<span class="token punctuation">.</span>llx<span class="token punctuation">)</span><span class="token punctuation">;</span>        k2 <span class="token operator">=</span> <span class="token function">min</span><span class="token punctuation">(</span>t<span class="token punctuation">.</span>urx<span class="token punctuation">,</span> cur<span class="token punctuation">.</span>urx<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>t<span class="token punctuation">.</span>llx <span class="token operator">&lt;</span> k1<span class="token punctuation">)</span>        <span class="token punctuation">{</span>            tem<span class="token punctuation">.</span>urx <span class="token operator">=</span> k1 <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span>            <span class="token function">add</span><span class="token punctuation">(</span>tem<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>t<span class="token punctuation">.</span>urx <span class="token operator">&gt;</span> k2<span class="token punctuation">)</span>        <span class="token punctuation">{</span>            tem <span class="token operator">=</span> t<span class="token punctuation">,</span> tem<span class="token punctuation">.</span>llx <span class="token operator">=</span> k2 <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span>            <span class="token function">add</span><span class="token punctuation">(</span>tem<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        tem <span class="token operator">=</span> t<span class="token punctuation">,</span> tem<span class="token punctuation">.</span>llx <span class="token operator">=</span> k1 <span class="token punctuation">,</span> tem<span class="token punctuation">.</span>urx <span class="token operator">=</span> k2<span class="token punctuation">;</span>        <span class="token function">cut</span><span class="token punctuation">(</span>tem<span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token keyword">int</span> argc<span class="token punctuation">,</span> <span class="token keyword">char</span> <span class="token operator">*</span>argv<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">ifdef</span> <span class="token expression">ACM_LOCAL </span><span class="token comment">// Local</span></span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"in"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">,</span> <span class="token constant">stdin</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">else</span></span>    <span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">ifndef</span>  <span class="token expression">ONLINE_JUDGE </span><span class="token comment">// not HDOJ / POJ</span></span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"rect1.in"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">,</span> <span class="token constant">stdin</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"rect1.out"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">,</span> <span class="token constant">stdout</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">endif</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">endif</span></span>    <span class="token keyword">int</span> a<span class="token punctuation">,</span> b<span class="token punctuation">,</span> n<span class="token punctuation">;</span>    <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d %d %d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>a<span class="token punctuation">,</span> <span class="token operator">&amp;</span>b<span class="token punctuation">,</span> <span class="token operator">&amp;</span>n<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token function">add</span><span class="token punctuation">(</span><span class="token function">rect</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> a<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> b<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// add the white sheet first.</span>    <span class="token keyword">while</span><span class="token punctuation">(</span>n<span class="token operator">--</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d %d %d %d %d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>cur<span class="token punctuation">.</span>llx<span class="token punctuation">,</span> <span class="token operator">&amp;</span>cur<span class="token punctuation">.</span>lly<span class="token punctuation">,</span> <span class="token operator">&amp;</span>cur<span class="token punctuation">.</span>urx<span class="token punctuation">,</span> <span class="token operator">&amp;</span>cur<span class="token punctuation">.</span>ury<span class="token punctuation">,</span> <span class="token operator">&amp;</span>cur<span class="token punctuation">.</span>color<span class="token punctuation">)</span><span class="token punctuation">;</span>        cur<span class="token punctuation">.</span>urx<span class="token operator">--</span><span class="token punctuation">,</span> cur<span class="token punctuation">.</span>ury<span class="token operator">--</span><span class="token punctuation">;</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> tot<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span> i<span class="token operator">&gt;=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">--</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">cross</span><span class="token punctuation">(</span>cur<span class="token punctuation">,</span> rects<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                <span class="token function">cut</span><span class="token punctuation">(</span>rects<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>                <span class="token function">del</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token punctuation">}</span>        <span class="token punctuation">}</span>        <span class="token function">add</span><span class="token punctuation">(</span>cur<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    map<span class="token operator">&lt;</span><span class="token keyword">int</span><span class="token punctuation">,</span> <span class="token keyword">int</span><span class="token operator">&gt;</span> cnt<span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> tot<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        cnt<span class="token punctuation">[</span>rects<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>color<span class="token punctuation">]</span> <span class="token operator">+=</span> rects<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">S</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">for</span><span class="token punctuation">(</span>map<span class="token operator">&lt;</span><span class="token keyword">int</span><span class="token punctuation">,</span> <span class="token keyword">int</span><span class="token operator">&gt;</span><span class="token double-colon punctuation">::</span>iterator it <span class="token operator">=</span> cnt<span class="token punctuation">.</span><span class="token function">begin</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> it<span class="token operator">!=</span> cnt<span class="token punctuation">.</span><span class="token function">end</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> it<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>it<span class="token operator">-&gt;</span>second<span class="token punctuation">)</span>            <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%d %d\n"</span><span class="token punctuation">,</span> it<span class="token operator">-&gt;</span>first<span class="token punctuation">,</span> it<span class="token operator">-&gt;</span>second<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>BTW, 果然学新的算法就要跟着代码一行一行调试～虽然感觉上慢了点但是可以掌握透彻～</p><p>还有，IOI国家集训队论文2004年薛茅的讲线段树跟矩形切割的，很清楚，<a href="/assets/dl/%E8%96%9B%E8%8C%85-%E8%A7%A3%E5%86%B3%E5%8A%A8%E6%80%81%E7%BB%9F%E8%AE%A1%E9%97%AE%E9%A2%98%E7%9A%84%E4%B8%A4%E6%8A%8A%E5%88%A9%E5%88%83%E2%80%94%E2%80%94%E5%89%96%E6%9E%90%E7%BA%BF%E6%AE%B5%E6%A0%91%E4%B8%8E%E7%9F%A9%E5%BD%A2%E5%88%87%E5%89%B2.pdf">链接在这里</a>。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;比较基础的矩形切割，是POJ 2528 Mayor’s posters的二维版。&lt;/p&gt;
&lt;p&gt;还是要注意边缘的情况，比如当(0,8)(18,18) 切割(18,0)(19,19)的时候，结果应该是得到三个矩形&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;(18,19)(18,19) --&amp;gt; 面积为1&lt;/li&gt;
&lt;li&gt;(19,0)(19,19) --&amp;gt; 面积为20&lt;/li&gt;
&lt;li&gt;(18,0)(18,7) --&amp;gt; 面积为8&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;恩，其实我一直没搞懂为啥给数据的时候llx和lly是真正的坐标值，而urx和ury却必须减一之后再用…&lt;/p&gt;
&lt;pre class=&quot;line-numbers language-cpp&quot; style=&quot;max-height: 30em&quot; data-prismjs-copy-timeout=&quot;500&quot; tabindex=&quot;0&quot;&gt;&lt;code id=&quot;caa8d63e&quot; class=&quot;language-cpp&quot; data-prism-hydrate=&quot;{&amp;quot;element&amp;quot;:&amp;quot;caa8d63e&amp;quot;,&amp;quot;language&amp;quot;:&amp;quot;cpp&amp;quot;,&amp;quot;code&amp;quot;:&amp;quot;/*&#92;nID: xjtuacm1&#92;nPROG: rect1&#92;nLANG: C++&#92;n*/&#92;n#include&#92;u003ciostream&#92;u003e&#92;n#include&lt;stack&gt;&#92;n#include&lt;cstring&gt;&#92;n#include&lt;cstdio&gt;&#92;n#include&lt;queue&gt;&#92;n#include&lt;algorithm&gt;&#92;n#include&lt;set&gt;&#92;n#include&lt;map&gt;&#92;n#include&lt;vector&gt;&#92;n#include&lt;cmath&gt;&#92;nusing namespace std;&#92;nconst int M = 100000;&#92;nconst int N = 1000;&#92;n&#92;nstruct rect&#92;n{&#92;n    int llx, lly;&#92;n    int urx, ury;&#92;n    int color;&#92;n    rect(int lx = 0, int ly = 0, int rx = 0, int ry = 0, int c = 0)&#92;n    : llx(lx), lly(ly), urx(rx), ury(ry), color(c) {}&#92;n&#92;n    int S()&#92;n    {&#92;n        return (urx - llx + 1) * (ury - lly + 1);&#92;n    }&#92;n}rects[M], cur;&#92;nint tot;&#92;n&#92;ninline bool cross(const rect&#92;u0026 r1, const rect&amp;amp; r2)&#92;n{&#92;n    return !(&#92;n             (r1.llx &gt; r2.urx)&#92;n             || (r1.urx &lt; r2.llx)&#92;n             || (r1.lly &gt; r2.ury)&#92;n             || (r1.ury &lt; r2.lly));&#92;n&#92;n}&#92;n&#92;ninline void add(const rect&amp;amp; t)&#92;n{&#92;n    rects[tot++] = t;&#92;n}&#92;n&#92;ninline void del(int idx)&#92;n{&#92;n    rects[idx] = rects[--tot];&#92;n}&#92;n&#92;nvoid cut(const rect&amp;amp; t, bool vertical = false)&#92;n{&#92;n    int k1, k2;&#92;n    rect tem = t;&#92;n    if(vertical)&#92;n    {&#92;n        k1 = max(t.lly, cur.lly);&#92;n        k2 = min(t.ury, cur.ury);&#92;n        if(t.lly &lt; k1)&#92;n        {&#92;n            tem.ury = k1 - 1;&#92;n            add(tem);&#92;n        }&#92;n        if(k2 &lt; t.ury)&#92;n        {&#92;n            tem = t, tem.lly = k2 + 1;&#92;n            add(tem);&#92;n        }&#92;n    }&#92;n    else&#92;n    {&#92;n        k1 = max(t.llx, cur.llx);&#92;n        k2 = min(t.urx, cur.urx);&#92;n        if(t.llx &lt; k1)&#92;n        {&#92;n            tem.urx = k1 - 1;&#92;n            add(tem);&#92;n        }&#92;n        if(t.urx &gt; k2)&#92;n        {&#92;n            tem = t, tem.llx = k2 + 1;&#92;n            add(tem);&#92;n        }&#92;n        tem = t, tem.llx = k1 , tem.urx = k2;&#92;n        cut(tem, true);&#92;n    }&#92;n}&#92;n&#92;n&#92;nint main(int argc, char *argv[])&#92;n{&#92;n#ifdef ACM_LOCAL // Local&#92;n    freopen(&#92;&amp;quot;in&#92;&amp;quot;, &#92;&amp;quot;r&#92;&amp;quot;, stdin);&#92;n#else&#92;n    #ifndef  ONLINE_JUDGE // not HDOJ / POJ&#92;n    freopen(&#92;&amp;quot;rect1.in&#92;&amp;quot;, &#92;&amp;quot;r&#92;&amp;quot;, stdin);&#92;n    freopen(&#92;&amp;quot;rect1.out&#92;&amp;quot;, &#92;&amp;quot;w&#92;&amp;quot;, stdout);&#92;n    #endif&#92;n#endif&#92;n&#92;n    int a, b, n;&#92;n    scanf(&#92;&amp;quot;%d %d %d&#92;&amp;quot;, &amp;amp;a, &amp;amp;b, &amp;amp;n);&#92;n    add(rect(0, 0, a-1, b-1, 1)); // add the white sheet first.&#92;n&#92;n    while(n--)&#92;n    {&#92;n        scanf(&#92;&amp;quot;%d %d %d %d %d&#92;&amp;quot;, &amp;amp;cur.llx, &amp;amp;cur.lly, &amp;amp;cur.urx, &amp;amp;cur.ury, &amp;amp;cur.color);&#92;n        cur.urx--, cur.ury--;&#92;n&#92;n        for(int i = tot-1; i&gt;= 0; i--)&#92;n        {&#92;n            if(cross(cur, rects[i]))&#92;n            {&#92;n                cut(rects[i]);&#92;n                del(i);&#92;n            }&#92;n        }&#92;n        add(cur);&#92;n    }&#92;n&#92;n    map&lt;int, int&gt; cnt;&#92;n    for(int i = 0; i!= tot; i++)&#92;n    {&#92;n        cnt[rects[i].color] += rects[i].S();&#92;n    }&#92;n&#92;n    for(map&lt;int, int&gt;::iterator it = cnt.begin(); it!= cnt.end(); it++)&#92;n    {&#92;n        if(it-&gt;second)&#92;n            printf(&#92;&amp;quot;%d %d&#92;&#92;n&#92;&amp;quot;, it-&gt;first, it-&gt;second);&#92;n    }&#92;n&#92;n    return 0;&#92;n}&amp;quot;,&amp;quot;settings&amp;quot;:{},&amp;quot;vars&amp;quot;:{&amp;quot;command-line&amp;quot;:{&amp;quot;complete&amp;quot;:true}},&amp;quot;highlightedCode&amp;quot;:&amp;quot;&lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;/*&#92;nID: xjtuacm1&#92;nPROG: rect1&#92;nLANG: C++&#92;n*/&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;iostream&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;stack&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cstring&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cstdio&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;queue&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;algorithm&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;set&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;map&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;vector&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cmath&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;using&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;namespace&lt;/span&gt; std&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; M &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;100000&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; N &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1000&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;struct&lt;/span&gt; &lt;span class=&#92;&amp;quot;token class-name&#92;&amp;quot;&gt;rect&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; llx&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; lly&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; urx&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; ury&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;rect&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; lx &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; ly &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; rx &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; ry &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; c &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;:&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;llx&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;lx&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;lly&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;ly&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;urx&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;rx&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;ury&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;ry&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;color&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;c&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;S&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;urx &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; llx &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;ury &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; lly &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;rects&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;M&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; tot&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;inline&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;bool&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;cross&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; rect&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; r1&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; rect&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; r2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&#92;n             &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;r1&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;llx &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt; r2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;urx&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n             &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;||&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;r1&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;urx &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt; r2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;llx&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n             &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;||&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;r1&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;lly &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt; r2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;ury&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n             &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;||&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;r1&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;ury &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt; r2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;lly&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;inline&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;add&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; rect&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    rects&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;tot&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;inline&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;del&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; idx&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    rects&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;idx&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; rects&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;--&lt;/span&gt;tot&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;cut&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; rect&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;bool&lt;/span&gt; vertical &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;false&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; k1&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; k2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    rect tem &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;vertical&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        k1 &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;max&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;lly&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;lly&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        k2 &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;min&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;ury&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;ury&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;lly &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt; k1&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;ury &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; k1 &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;add&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;k2 &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;ury&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            tem &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;lly &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; k2 &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;add&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;else&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        k1 &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;max&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;llx&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;llx&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        k2 &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;min&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;urx&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;urx&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;llx &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt; k1&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;urx &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; k1 &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;add&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;urx &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt; k2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            tem &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;llx &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; k2 &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;add&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        tem &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;llx &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; k1 &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;urx &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; k2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;cut&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;tem&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;true&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;main&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; argc&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;argv&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;ifdef&lt;/span&gt; &lt;span class=&#92;&amp;quot;token expression&#92;&amp;quot;&gt;ACM_LOCAL &lt;/span&gt;&lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// Local&lt;/span&gt;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;in&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;r&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdin&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;else&lt;/span&gt;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;ifndef&lt;/span&gt;  &lt;span class=&#92;&amp;quot;token expression&#92;&amp;quot;&gt;ONLINE_JUDGE &lt;/span&gt;&lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// not HDOJ / POJ&lt;/span&gt;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;rect1.in&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;r&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdin&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;rect1.out&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;w&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdout&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;endif&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;endif&lt;/span&gt;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;scanf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d %d %d&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;add&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;rect&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; a&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; b&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// add the white sheet first.&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;while&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;n&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;--&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;scanf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d %d %d %d %d&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;llx&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;lly&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;urx&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;ury&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;urx&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;--&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;ury&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;--&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; tot&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;--&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;cross&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; rects&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;cut&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;rects&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;del&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;add&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    map&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt; cnt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; tot&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        cnt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;rects&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+=&lt;/span&gt; rects&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;S&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;map&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token double-colon punctuation&#92;&amp;quot;&gt;::&lt;/span&gt;iterator it &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; cnt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;begin&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; it&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; cnt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;end&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; it&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;it&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&gt;&lt;/span&gt;second&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;printf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d %d&#92;&#92;n&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; it&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&gt;&lt;/span&gt;first&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; it&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&gt;&lt;/span&gt;second&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&amp;quot;,&amp;quot;plugins&amp;quot;:{&amp;quot;lineNumbers&amp;quot;:true}}&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/*
ID: xjtuacm1
PROG: rect1
LANG: C++
*/&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;stack&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cstring&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cstdio&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;queue&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;algorithm&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;set&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;map&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;vector&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cmath&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;namespace&lt;/span&gt; std&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; M &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; N &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;rect&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; llx&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; lly&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; urx&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; ury&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;rect&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; lx &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; ly &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; rx &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; ry &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; c &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;llx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lx&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;lly&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ly&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;urx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;rx&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;ury&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ry&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;S&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;urx &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; llx &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ury &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; lly &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;rects&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;M&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cur&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; tot&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;inline&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;cross&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; rect&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; r1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; rect&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; r2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
             &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;llx &lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; r2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;urx&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
             &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;urx &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; r2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;llx&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
             &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lly &lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; r2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ury&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
             &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ury &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; r2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lly&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;inline&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; rect&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    rects&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;tot&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;inline&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;del&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; idx&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    rects&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;idx&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; rects&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;tot&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;cut&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; rect&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;bool&lt;/span&gt; vertical &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; k1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; k2&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    rect tem &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;vertical&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        k1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lly&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lly&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        k2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ury&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ury&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lly &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; k1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            tem&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ury &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; k1 &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tem&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;k2 &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ury&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            tem &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; tem&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lly &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; k2 &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tem&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        k1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;llx&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;llx&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        k2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;urx&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;urx&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;llx &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; k1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            tem&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;urx &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; k1 &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tem&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;urx &lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; k2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            tem &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; tem&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;llx &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; k2 &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tem&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        tem &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; tem&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;llx &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; k1 &lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; tem&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;urx &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; k2&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;cut&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tem&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; argc&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;argv&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifdef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;ACM_LOCAL &lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;// Local&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;in&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;else&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifndef&lt;/span&gt;  &lt;span class=&quot;token expression&quot;&gt;ONLINE_JUDGE &lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;// not HDOJ / POJ&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;rect1.in&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;rect1.out&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;w&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdout&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d %d %d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;rect&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; a&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// add the white sheet first.&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d %d %d %d %d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;llx&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lly&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;urx&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ury&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;urx&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ury&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; tot&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;cross&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; rects&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;cut&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;rects&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;del&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    map&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; cnt&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; tot&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        cnt&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;rects&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; rects&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;S&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;map&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token double-colon punctuation&quot;&gt;::&lt;/span&gt;iterator it &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; cnt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; it&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; cnt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; it&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;it&lt;span class=&quot;token operator&quot;&gt;-&amp;gt;&lt;/span&gt;second&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d %d&#92;n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; it&lt;span class=&quot;token operator&quot;&gt;-&amp;gt;&lt;/span&gt;first&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; it&lt;span class=&quot;token operator&quot;&gt;-&amp;gt;&lt;/span&gt;second&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</summary>
    
    
    
    
    <category term="ACM" scheme="https://unlimited-code.works/tags/acm/"/>
    
    <category term="Rect-Cutting" scheme="https://unlimited-code.works/tags/rect-cutting/"/>
    
    <category term="USACO" scheme="https://unlimited-code.works/tags/usaco/"/>
    
  </entry>
  
  <entry>
    <title>POJ 2528 Mayor&#39;s posters</title>
    <link href="https://unlimited-code.works/blog/2013/02/16/poj-2528/"/>
    <id>https://unlimited-code.works/blog/2013/02/16/poj-2528/</id>
    <published>2013-02-17T03:29:00.000Z</published>
    <updated>2025-08-09T21:29:05.000Z</updated>
    
    <content type="html"><![CDATA[<p>这一题多数用的是线段树+离散化，但是今天正好看到矩阵切割，所以就用矩阵切割试了一下。</p><p>参考了 <code>http://www.2cto.com/kf/201209/156711.html</code> 的代码，进行了一些修改，个人感觉更简洁且比较容易理解。</p><pre class="line-numbers language-cpp" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="8ccce53e" class="language-cpp" data-prism-hydrate="{&quot;element&quot;:&quot;8ccce53e&quot;,&quot;language&quot;:&quot;cpp&quot;,&quot;code&quot;:&quot;#include\u003ciostream\u003e\n#include<stack>\n#include<cstring>\n#include<cstdio>\n#include<queue>\n#include<algorithm>\n#include<set>\n#include<map>\n#include<vector>\n#include<cmath>\nusing namespace std;\nconst int M = 100000;\nconst int N = 10000;\n\nstruct line\n{\n    int l, r;\n    int color;\n    line(int ll = 0, int rr = 0, int c = 0) : l(ll), r(rr), color(c) {}\n}post[M], cur;\nint tot;\n\nbool used[N];\n\ninline bool cross(const line\u0026 l1, const line&amp; l2)\n{\n    return !(\n             (l1.l > l2.r)\n             || (l1.r < l2.l));\n}\n\ninline void add(const line&amp; t)\n{\n    post[tot++] = t;\n}\n\nvoid cut(const line&amp; t)\n{\n    if(t.l < cur.l)\n    {\n        add(line(t.l, cur.l-1, t.color));\n    }\n    if(t.r > cur.r)\n    {\n        add(line(cur.r+1, t.r, t.color));\n    }\n}\n\n\nint main(int argc, char *argv[])\n{\n#ifdef ACM_LOCAL // Local\n    freopen(\&quot;in\&quot;, \&quot;r\&quot;, stdin);\n#else\n    #ifndef  ONLINE_JUDGE // not HDOJ / POJ\n    freopen(\&quot;humble.in\&quot;, \&quot;r\&quot;, stdin);\n    freopen(\&quot;humble.out\&quot;, \&quot;w\&quot;, stdout);\n    #endif\n#endif\n\n    int ncase;\n    scanf(\&quot;%d\&quot;, &amp;ncase);\n    while(ncase--)\n    {\n        tot = 0;\n        int color = 0;\n        int n;\n\n        scanf(\&quot;%d\&quot;, &amp;n);\n        while(n--)\n        {\n            scanf(\&quot;%d %d\&quot;, &amp;cur.l, &amp;cur.r);\n            cur.color = color++;\n\n            // 倒序，否则在cut操作中增加的线段也会再被检查一遍\n            for(int i = tot-1; i>= 0; i--)\n            {\n                if(cross(post[i], cur))\n                {\n                    cut(post[i]);\n                    post[i] = post[--tot];\n                }\n            }\n            add(cur);\n        }\n\n        memset(used, false, sizeof(used));\n        int cnt = 0;\n        for(int i = 0; i!= tot; i++)\n        {\n            if(!used[post[i].color])\n            {\n                used[post[i].color] = true;\n                cnt++;\n            }\n        }\n\n        printf(\&quot;%d\\n\&quot;, cnt);\n    }\n\n    return 0;\n}&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;iostream></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;stack></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstring></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstdio></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;queue></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;algorithm></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;set></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;map></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;vector></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cmath></span></span>\n<span class=\&quot;token keyword\&quot;>using</span> <span class=\&quot;token keyword\&quot;>namespace</span> std<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> M <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>100000</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> N <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>10000</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>struct</span> <span class=\&quot;token class-name\&quot;>line</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>int</span> l<span class=\&quot;token punctuation\&quot;>,</span> r<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>int</span> color<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>line</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> ll <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> rr <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> c <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>:</span> <span class=\&quot;token function\&quot;>l</span><span class=\&quot;token punctuation\&quot;>(</span>ll<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token function\&quot;>r</span><span class=\&quot;token punctuation\&quot;>(</span>rr<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token function\&quot;>color</span><span class=\&quot;token punctuation\&quot;>(</span>c<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token punctuation\&quot;>{</span><span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span>post<span class=\&quot;token punctuation\&quot;>[</span>M<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> cur<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> tot<span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>bool</span> used<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>inline</span> <span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token function\&quot;>cross</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>const</span> line<span class=\&quot;token operator\&quot;>&amp;amp;</span> l1<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>const</span> line<span class=\&quot;token operator\&quot;>&amp;amp;</span> l2<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token operator\&quot;>!</span><span class=\&quot;token punctuation\&quot;>(</span>\n             <span class=\&quot;token punctuation\&quot;>(</span>l1<span class=\&quot;token punctuation\&quot;>.</span>l <span class=\&quot;token operator\&quot;>></span> l2<span class=\&quot;token punctuation\&quot;>.</span>r<span class=\&quot;token punctuation\&quot;>)</span>\n             <span class=\&quot;token operator\&quot;>||</span> <span class=\&quot;token punctuation\&quot;>(</span>l1<span class=\&quot;token punctuation\&quot;>.</span>r <span class=\&quot;token operator\&quot;>&amp;lt;</span> l2<span class=\&quot;token punctuation\&quot;>.</span>l<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>inline</span> <span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>add</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>const</span> line<span class=\&quot;token operator\&quot;>&amp;amp;</span> t<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    post<span class=\&quot;token punctuation\&quot;>[</span>tot<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> t<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>cut</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>const</span> line<span class=\&quot;token operator\&quot;>&amp;amp;</span> t<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>t<span class=\&quot;token punctuation\&quot;>.</span>l <span class=\&quot;token operator\&quot;>&amp;lt;</span> cur<span class=\&quot;token punctuation\&quot;>.</span>l<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token function\&quot;>add</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>line</span><span class=\&quot;token punctuation\&quot;>(</span>t<span class=\&quot;token punctuation\&quot;>.</span>l<span class=\&quot;token punctuation\&quot;>,</span> cur<span class=\&quot;token punctuation\&quot;>.</span>l<span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> t<span class=\&quot;token punctuation\&quot;>.</span>color<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>t<span class=\&quot;token punctuation\&quot;>.</span>r <span class=\&quot;token operator\&quot;>></span> cur<span class=\&quot;token punctuation\&quot;>.</span>r<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token function\&quot;>add</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>line</span><span class=\&quot;token punctuation\&quot;>(</span>cur<span class=\&quot;token punctuation\&quot;>.</span>r<span class=\&quot;token operator\&quot;>+</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> t<span class=\&quot;token punctuation\&quot;>.</span>r<span class=\&quot;token punctuation\&quot;>,</span> t<span class=\&quot;token punctuation\&quot;>.</span>color<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>main</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> argc<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>char</span> <span class=\&quot;token operator\&quot;>*</span>argv<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>ifdef</span> <span class=\&quot;token expression\&quot;>ACM_LOCAL </span><span class=\&quot;token comment\&quot;>// Local</span></span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;in\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;r\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdin</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>else</span></span>\n    <span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>ifndef</span>  <span class=\&quot;token expression\&quot;>ONLINE_JUDGE </span><span class=\&quot;token comment\&quot;>// not HDOJ / POJ</span></span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;humble.in\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;r\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdin</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;humble.out\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;w\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdout</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>endif</span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>endif</span></span>\n\n    <span class=\&quot;token keyword\&quot;>int</span> ncase<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>ncase<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span>ncase<span class=\&quot;token operator\&quot;>--</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        tot <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>int</span> color <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>int</span> n<span class=\&quot;token punctuation\&quot;>;</span>\n\n        <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>n<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span>n<span class=\&quot;token operator\&quot;>--</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d %d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>cur<span class=\&quot;token punctuation\&quot;>.</span>l<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>cur<span class=\&quot;token punctuation\&quot;>.</span>r<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            cur<span class=\&quot;token punctuation\&quot;>.</span>color <span class=\&quot;token operator\&quot;>=</span> color<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n            <span class=\&quot;token comment\&quot;>// 倒序，否则在cut操作中增加的线段也会再被检查一遍</span>\n            <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> tot<span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>--</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>cross</span><span class=\&quot;token punctuation\&quot;>(</span>post<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> cur<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token punctuation\&quot;>{</span>\n                    <span class=\&quot;token function\&quot;>cut</span><span class=\&quot;token punctuation\&quot;>(</span>post<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                    post<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> post<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token operator\&quot;>--</span>tot<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token punctuation\&quot;>}</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n            <span class=\&quot;token function\&quot;>add</span><span class=\&quot;token punctuation\&quot;>(</span>cur<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n\n        <span class=\&quot;token function\&quot;>memset</span><span class=\&quot;token punctuation\&quot;>(</span>used<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token boolean\&quot;>false</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>sizeof</span><span class=\&quot;token punctuation\&quot;>(</span>used<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>int</span> cnt <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> tot<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>!</span>used<span class=\&quot;token punctuation\&quot;>[</span>post<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>color<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                used<span class=\&quot;token punctuation\&quot;>[</span>post<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>color<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>;</span>\n                cnt<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n\n        <span class=\&quot;token function\&quot;>printf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> cnt<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>&quot;,&quot;plugins&quot;:{&quot;lineNumbers&quot;:true}}"><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;iostream&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;stack&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstring&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstdio&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;queue&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;algorithm&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;set&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;map&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;vector&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cmath&gt;</span></span><span class="token keyword">using</span> <span class="token keyword">namespace</span> std<span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> M <span class="token operator">=</span> <span class="token number">100000</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> N <span class="token operator">=</span> <span class="token number">10000</span><span class="token punctuation">;</span><span class="token keyword">struct</span> <span class="token class-name">line</span><span class="token punctuation">{</span>    <span class="token keyword">int</span> l<span class="token punctuation">,</span> r<span class="token punctuation">;</span>    <span class="token keyword">int</span> color<span class="token punctuation">;</span>    <span class="token function">line</span><span class="token punctuation">(</span><span class="token keyword">int</span> ll <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token keyword">int</span> rr <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token keyword">int</span> c <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token operator">:</span> <span class="token function">l</span><span class="token punctuation">(</span>ll<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">r</span><span class="token punctuation">(</span>rr<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">color</span><span class="token punctuation">(</span>c<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">}</span>post<span class="token punctuation">[</span>M<span class="token punctuation">]</span><span class="token punctuation">,</span> cur<span class="token punctuation">;</span><span class="token keyword">int</span> tot<span class="token punctuation">;</span><span class="token keyword">bool</span> used<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">inline</span> <span class="token keyword">bool</span> <span class="token function">cross</span><span class="token punctuation">(</span><span class="token keyword">const</span> line<span class="token operator">&amp;</span> l1<span class="token punctuation">,</span> <span class="token keyword">const</span> line<span class="token operator">&amp;</span> l2<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">return</span> <span class="token operator">!</span><span class="token punctuation">(</span>             <span class="token punctuation">(</span>l1<span class="token punctuation">.</span>l <span class="token operator">&gt;</span> l2<span class="token punctuation">.</span>r<span class="token punctuation">)</span>             <span class="token operator">||</span> <span class="token punctuation">(</span>l1<span class="token punctuation">.</span>r <span class="token operator">&lt;</span> l2<span class="token punctuation">.</span>l<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">inline</span> <span class="token keyword">void</span> <span class="token function">add</span><span class="token punctuation">(</span><span class="token keyword">const</span> line<span class="token operator">&amp;</span> t<span class="token punctuation">)</span><span class="token punctuation">{</span>    post<span class="token punctuation">[</span>tot<span class="token operator">++</span><span class="token punctuation">]</span> <span class="token operator">=</span> t<span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">void</span> <span class="token function">cut</span><span class="token punctuation">(</span><span class="token keyword">const</span> line<span class="token operator">&amp;</span> t<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">if</span><span class="token punctuation">(</span>t<span class="token punctuation">.</span>l <span class="token operator">&lt;</span> cur<span class="token punctuation">.</span>l<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token function">add</span><span class="token punctuation">(</span><span class="token function">line</span><span class="token punctuation">(</span>t<span class="token punctuation">.</span>l<span class="token punctuation">,</span> cur<span class="token punctuation">.</span>l<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> t<span class="token punctuation">.</span>color<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">if</span><span class="token punctuation">(</span>t<span class="token punctuation">.</span>r <span class="token operator">&gt;</span> cur<span class="token punctuation">.</span>r<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token function">add</span><span class="token punctuation">(</span><span class="token function">line</span><span class="token punctuation">(</span>cur<span class="token punctuation">.</span>r<span class="token operator">+</span><span class="token number">1</span><span class="token punctuation">,</span> t<span class="token punctuation">.</span>r<span class="token punctuation">,</span> t<span class="token punctuation">.</span>color<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token keyword">int</span> argc<span class="token punctuation">,</span> <span class="token keyword">char</span> <span class="token operator">*</span>argv<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">ifdef</span> <span class="token expression">ACM_LOCAL </span><span class="token comment">// Local</span></span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"in"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">,</span> <span class="token constant">stdin</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">else</span></span>    <span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">ifndef</span>  <span class="token expression">ONLINE_JUDGE </span><span class="token comment">// not HDOJ / POJ</span></span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"humble.in"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">,</span> <span class="token constant">stdin</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"humble.out"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">,</span> <span class="token constant">stdout</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">endif</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">endif</span></span>    <span class="token keyword">int</span> ncase<span class="token punctuation">;</span>    <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>ncase<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">while</span><span class="token punctuation">(</span>ncase<span class="token operator">--</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        tot <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>        <span class="token keyword">int</span> color <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>        <span class="token keyword">int</span> n<span class="token punctuation">;</span>        <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>n<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">while</span><span class="token punctuation">(</span>n<span class="token operator">--</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d %d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>cur<span class="token punctuation">.</span>l<span class="token punctuation">,</span> <span class="token operator">&amp;</span>cur<span class="token punctuation">.</span>r<span class="token punctuation">)</span><span class="token punctuation">;</span>            cur<span class="token punctuation">.</span>color <span class="token operator">=</span> color<span class="token operator">++</span><span class="token punctuation">;</span>            <span class="token comment">// 倒序，否则在cut操作中增加的线段也会再被检查一遍</span>            <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> tot<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span> i<span class="token operator">&gt;=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">--</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">cross</span><span class="token punctuation">(</span>post<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">,</span> cur<span class="token punctuation">)</span><span class="token punctuation">)</span>                <span class="token punctuation">{</span>                    <span class="token function">cut</span><span class="token punctuation">(</span>post<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>                    post<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> post<span class="token punctuation">[</span><span class="token operator">--</span>tot<span class="token punctuation">]</span><span class="token punctuation">;</span>                <span class="token punctuation">}</span>            <span class="token punctuation">}</span>            <span class="token function">add</span><span class="token punctuation">(</span>cur<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token function">memset</span><span class="token punctuation">(</span>used<span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token keyword">sizeof</span><span class="token punctuation">(</span>used<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">int</span> cnt <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> tot<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span>used<span class="token punctuation">[</span>post<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>color<span class="token punctuation">]</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                used<span class="token punctuation">[</span>post<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>color<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>                cnt<span class="token operator">++</span><span class="token punctuation">;</span>            <span class="token punctuation">}</span>        <span class="token punctuation">}</span>        <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%d\n"</span><span class="token punctuation">,</span> cnt<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>BTW，按说注释中提到的那个循环改成顺序的应该也可以的，只是会慢一些，但实际提交了却是RE。目前还不清楚原因。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;这一题多数用的是线段树+离散化，但是今天正好看到矩阵切割，所以就用矩阵切割试了一下。&lt;/p&gt;
&lt;p&gt;参考了 &lt;code&gt;http://www.2cto.com/kf/201209/156711.html&lt;/code&gt; 的代码，进行了一些修改，个人感觉更简洁且比较容易理解。&lt;/p&gt;
&lt;pre class=&quot;line-numbers language-cpp&quot; style=&quot;max-height: 30em&quot; data-prismjs-copy-timeout=&quot;500&quot; tabindex=&quot;0&quot;&gt;&lt;code id=&quot;8ccce53e&quot; class=&quot;language-cpp&quot; data-prism-hydrate=&quot;{&amp;quot;element&amp;quot;:&amp;quot;8ccce53e&amp;quot;,&amp;quot;language&amp;quot;:&amp;quot;cpp&amp;quot;,&amp;quot;code&amp;quot;:&amp;quot;#include&#92;u003ciostream&#92;u003e&#92;n#include&lt;stack&gt;&#92;n#include&lt;cstring&gt;&#92;n#include&lt;cstdio&gt;&#92;n#include&lt;queue&gt;&#92;n#include&lt;algorithm&gt;&#92;n#include&lt;set&gt;&#92;n#include&lt;map&gt;&#92;n#include&lt;vector&gt;&#92;n#include&lt;cmath&gt;&#92;nusing namespace std;&#92;nconst int M = 100000;&#92;nconst int N = 10000;&#92;n&#92;nstruct line&#92;n{&#92;n    int l, r;&#92;n    int color;&#92;n    line(int ll = 0, int rr = 0, int c = 0) : l(ll), r(rr), color(c) {}&#92;n}post[M], cur;&#92;nint tot;&#92;n&#92;nbool used[N];&#92;n&#92;ninline bool cross(const line&#92;u0026 l1, const line&amp;amp; l2)&#92;n{&#92;n    return !(&#92;n             (l1.l &gt; l2.r)&#92;n             || (l1.r &lt; l2.l));&#92;n}&#92;n&#92;ninline void add(const line&amp;amp; t)&#92;n{&#92;n    post[tot++] = t;&#92;n}&#92;n&#92;nvoid cut(const line&amp;amp; t)&#92;n{&#92;n    if(t.l &lt; cur.l)&#92;n    {&#92;n        add(line(t.l, cur.l-1, t.color));&#92;n    }&#92;n    if(t.r &gt; cur.r)&#92;n    {&#92;n        add(line(cur.r+1, t.r, t.color));&#92;n    }&#92;n}&#92;n&#92;n&#92;nint main(int argc, char *argv[])&#92;n{&#92;n#ifdef ACM_LOCAL // Local&#92;n    freopen(&#92;&amp;quot;in&#92;&amp;quot;, &#92;&amp;quot;r&#92;&amp;quot;, stdin);&#92;n#else&#92;n    #ifndef  ONLINE_JUDGE // not HDOJ / POJ&#92;n    freopen(&#92;&amp;quot;humble.in&#92;&amp;quot;, &#92;&amp;quot;r&#92;&amp;quot;, stdin);&#92;n    freopen(&#92;&amp;quot;humble.out&#92;&amp;quot;, &#92;&amp;quot;w&#92;&amp;quot;, stdout);&#92;n    #endif&#92;n#endif&#92;n&#92;n    int ncase;&#92;n    scanf(&#92;&amp;quot;%d&#92;&amp;quot;, &amp;amp;ncase);&#92;n    while(ncase--)&#92;n    {&#92;n        tot = 0;&#92;n        int color = 0;&#92;n        int n;&#92;n&#92;n        scanf(&#92;&amp;quot;%d&#92;&amp;quot;, &amp;amp;n);&#92;n        while(n--)&#92;n        {&#92;n            scanf(&#92;&amp;quot;%d %d&#92;&amp;quot;, &amp;amp;cur.l, &amp;amp;cur.r);&#92;n            cur.color = color++;&#92;n&#92;n            // 倒序，否则在cut操作中增加的线段也会再被检查一遍&#92;n            for(int i = tot-1; i&gt;= 0; i--)&#92;n            {&#92;n                if(cross(post[i], cur))&#92;n                {&#92;n                    cut(post[i]);&#92;n                    post[i] = post[--tot];&#92;n                }&#92;n            }&#92;n            add(cur);&#92;n        }&#92;n&#92;n        memset(used, false, sizeof(used));&#92;n        int cnt = 0;&#92;n        for(int i = 0; i!= tot; i++)&#92;n        {&#92;n            if(!used[post[i].color])&#92;n            {&#92;n                used[post[i].color] = true;&#92;n                cnt++;&#92;n            }&#92;n        }&#92;n&#92;n        printf(&#92;&amp;quot;%d&#92;&#92;n&#92;&amp;quot;, cnt);&#92;n    }&#92;n&#92;n    return 0;&#92;n}&amp;quot;,&amp;quot;settings&amp;quot;:{},&amp;quot;vars&amp;quot;:{&amp;quot;command-line&amp;quot;:{&amp;quot;complete&amp;quot;:true}},&amp;quot;highlightedCode&amp;quot;:&amp;quot;&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;iostream&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;stack&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cstring&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cstdio&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;queue&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;algorithm&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;set&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;map&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;vector&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cmath&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;using&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;namespace&lt;/span&gt; std&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; M &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;100000&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; N &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;10000&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;struct&lt;/span&gt; &lt;span class=&#92;&amp;quot;token class-name&#92;&amp;quot;&gt;line&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; l&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;line&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; ll &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; rr &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; c &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;:&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;l&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;ll&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;r&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;rr&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;color&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;c&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;post&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;M&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; tot&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;bool&lt;/span&gt; used&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;inline&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;bool&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;cross&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; line&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; l1&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; line&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; l2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&#92;n             &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;l1&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;l &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt; l2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n             &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;||&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;l1&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;r &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt; l2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;l&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;inline&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;add&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; line&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    post&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;tot&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;cut&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; line&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;l &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt; cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;l&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;add&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;line&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;l&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;l&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;r &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt; cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;add&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;line&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;r&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;main&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; argc&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;argv&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;ifdef&lt;/span&gt; &lt;span class=&#92;&amp;quot;token expression&#92;&amp;quot;&gt;ACM_LOCAL &lt;/span&gt;&lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// Local&lt;/span&gt;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;in&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;r&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdin&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;else&lt;/span&gt;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;ifndef&lt;/span&gt;  &lt;span class=&#92;&amp;quot;token expression&#92;&amp;quot;&gt;ONLINE_JUDGE &lt;/span&gt;&lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// not HDOJ / POJ&lt;/span&gt;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;humble.in&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;r&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdin&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;humble.out&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;w&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdout&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;endif&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;endif&lt;/span&gt;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; ncase&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;scanf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;ncase&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;while&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;ncase&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;--&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        tot &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; color &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;scanf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;while&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;n&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;--&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;scanf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d %d&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;l&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;color &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; color&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n            &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// 倒序，否则在cut操作中增加的线段也会再被检查一遍&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; tot&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;--&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;cross&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;post&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;cut&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;post&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                    post&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; post&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;--&lt;/span&gt;tot&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;add&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;memset&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;used&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;false&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;sizeof&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;used&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; cnt &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; tot&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!&lt;/span&gt;used&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;post&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                used&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;post&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;true&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                cnt&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;printf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d&#92;&#92;n&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; cnt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&amp;quot;,&amp;quot;plugins&amp;quot;:{&amp;quot;lineNumbers&amp;quot;:true}}&quot;&gt;&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;stack&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cstring&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cstdio&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;queue&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;algorithm&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;set&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;map&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;vector&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cmath&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;namespace&lt;/span&gt; std&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; M &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; N &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;line&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; l&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; ll &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; rr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; c &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;l&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ll&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;r&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;rr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;post&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;M&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cur&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; tot&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;bool&lt;/span&gt; used&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;inline&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;cross&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; line&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; l1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; line&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; l2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
             &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;l1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;l &lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; l2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
             &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;l1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;r &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; l2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;l&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;inline&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; line&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    post&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;tot&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;cut&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; line&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;l &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;l&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;l&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;l&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;r &lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;r&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; argc&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;argv&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifdef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;ACM_LOCAL &lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;// Local&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;in&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;else&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifndef&lt;/span&gt;  &lt;span class=&quot;token expression&quot;&gt;ONLINE_JUDGE &lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;// not HDOJ / POJ&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;humble.in&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;humble.out&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;w&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdout&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; ncase&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;ncase&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ncase&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        tot &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d %d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;l&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            cur&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; color&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

            &lt;span class=&quot;token comment&quot;&gt;// 倒序，否则在cut操作中增加的线段也会再被检查一遍&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; tot&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;cross&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;post&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cur&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    &lt;span class=&quot;token function&quot;&gt;cut&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;post&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                    post&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; post&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;tot&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

        &lt;span class=&quot;token function&quot;&gt;memset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;used&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;used&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; cnt &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; tot&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;used&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;post&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                used&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;post&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                cnt&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&#92;n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cnt&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;BTW，按说注释中提到的那个循环改成顺序的应该也可以的，只是会慢一些，但实际提交了却是RE。目前还不清楚原因。&lt;/p&gt;
</summary>
    
    
    
    
    <category term="ACM" scheme="https://unlimited-code.works/tags/acm/"/>
    
    <category term="POJ" scheme="https://unlimited-code.works/tags/poj/"/>
    
    <category term="Rect-Cutting" scheme="https://unlimited-code.works/tags/rect-cutting/"/>
    
  </entry>
  
  <entry>
    <title>USACO 3.1.1 Agri-Net</title>
    <link href="https://unlimited-code.works/blog/2013/02/15/usaco-3-1-1/"/>
    <id>https://unlimited-code.works/blog/2013/02/15/usaco-3-1-1/</id>
    <published>2013-02-16T04:49:00.000Z</published>
    <updated>2025-08-09T21:29:05.000Z</updated>
    
    <content type="html"><![CDATA[<p>标准的最小生成树，用了Kruskal算法，写了一个可以以后用的并查集类。</p><pre class="line-numbers language-cpp" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="eed0213e" class="language-cpp" data-prism-hydrate="{&quot;element&quot;:&quot;eed0213e&quot;,&quot;language&quot;:&quot;cpp&quot;,&quot;code&quot;:&quot;/*\nID: xjtuacm1\nPROG: agrinet\nLANG: C++\n*/\n#include\u003ciostream\u003e\n#include<stack>\n#include<cstring>\n#include<cstdio>\n#include<queue>\n#include<algorithm>\n#include<set>\n#include<map>\n#include<vector>\n#include<cmath>\nusing namespace std;\nconst int MAXDIS = 100000 + 10;\nconst int N = 100;\nconst int M = N * (N - 1) / 2;\n\nint n, m;\nint e;\nint u[M], v[M], w[M];\n\nint wr[M];\n\nvoid initGraph()\n{\n    e = 0;\n}\n\nvoid addEdge(int x, int y, int cost)\n{\n    u[e] = x;\n    v[e] = y;\n    w[e++] = cost;\n}\n\nclass UnionFind\n{\n    int n;\n    int fa[N];\n    int r[N];\n\npublic:\n    UnionFind(int nn)\n        : n(nn)\n    {\n        init();\n    }\n\n    void init()\n    {\n        memset(r, 0, sizeof(r));\n        for(int i = 0; i!= n; i++)\n            fa[i] = i;\n    }\n\n    int Find(int x)\n    {\n        if(x != fa[x])\n        {\n            fa[x] = Find(fa[x]);\n        }\n        return fa[x];\n    }\n\n    void Union(int x, int y)\n    {\n        Link(Find(x), Find(y));\n    }\nprivate:\n    void Link(int x, int y)\n    {\n        if(r[x] > r[y])\n        {\n            fa[y] = x;\n        }\n        else\n        {\n            fa[x] = y;\n            if(r[x] == r[y])\n                r[y]++;\n        }\n    }\n};\n\nbool cmp(int a, int b)\n{\n    return w[a] < w[b];\n}\n\nint kruskal()\n{\n    UnionFind uf(n);\n    for(int i = 0; i!= m; i++)\n        wr[i] = i;\n    int ret = 0;\n\n    sort(wr, wr+m, cmp);\n\n    for(int i = 0; i!= m; i++)\n    {\n        int ed = wr[i];\n        if(uf.Find(u[ed]) != uf.Find(v[ed]))\n        {\n            ret += w[ed];\n            uf.Union(u[ed], v[ed]);\n        }\n    }\n\n    return ret;\n}\n\nint main(int argc, char *argv[])\n{\n#ifdef ACM\n    freopen(\&quot;in\&quot;, \&quot;r\&quot;, stdin);\n#else\n    freopen(\&quot;agrinet.in\&quot;, \&quot;r\&quot;, stdin);\n    freopen(\&quot;agrinet.out\&quot;, \&quot;w\&quot;, stdout);\n#endif // ACM\n\n    scanf(\&quot;%d\&quot;, \u0026n);\n    m = n * (n - 1) / 2;\n    for(int i = 0; i!= n; i++)\n        for(int j = 0; j!= n; j++)\n        {\n            int t;\n            scanf(\&quot;%d\&quot;, &amp;t);\n            if(i > j)\n                addEdge(i, j, t);\n        }\n\n    printf(\&quot;%d\\n\&quot;, kruskal());\n\n    return 0;\n}&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;<span class=\&quot;token comment\&quot;>/*\nID: xjtuacm1\nPROG: agrinet\nLANG: C++\n*/</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;iostream></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;stack></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstring></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstdio></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;queue></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;algorithm></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;set></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;map></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;vector></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cmath></span></span>\n<span class=\&quot;token keyword\&quot;>using</span> <span class=\&quot;token keyword\&quot;>namespace</span> std<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> MAXDIS <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>100000</span> <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>10</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> N <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>100</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> M <span class=\&quot;token operator\&quot;>=</span> N <span class=\&quot;token operator\&quot;>*</span> <span class=\&quot;token punctuation\&quot;>(</span>N <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>/</span> <span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> n<span class=\&quot;token punctuation\&quot;>,</span> m<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> e<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> u<span class=\&quot;token punctuation\&quot;>[</span>M<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> v<span class=\&quot;token punctuation\&quot;>[</span>M<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> w<span class=\&quot;token punctuation\&quot;>[</span>M<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> wr<span class=\&quot;token punctuation\&quot;>[</span>M<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>initGraph</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    e <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>addEdge</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> x<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> y<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> cost<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    u<span class=\&quot;token punctuation\&quot;>[</span>e<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> x<span class=\&quot;token punctuation\&quot;>;</span>\n    v<span class=\&quot;token punctuation\&quot;>[</span>e<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> y<span class=\&quot;token punctuation\&quot;>;</span>\n    w<span class=\&quot;token punctuation\&quot;>[</span>e<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> cost<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>class</span> <span class=\&quot;token class-name\&quot;>UnionFind</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>int</span> n<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>int</span> fa<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>int</span> r<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>public</span><span class=\&quot;token operator\&quot;>:</span>\n    <span class=\&quot;token function\&quot;>UnionFind</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> nn<span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token operator\&quot;>:</span> <span class=\&quot;token function\&quot;>n</span><span class=\&quot;token punctuation\&quot;>(</span>nn<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token function\&quot;>init</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>init</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token function\&quot;>memset</span><span class=\&quot;token punctuation\&quot;>(</span>r<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>sizeof</span><span class=\&quot;token punctuation\&quot;>(</span>r<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n            fa<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> i<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>Find</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> x<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>x <span class=\&quot;token operator\&quot;>!=</span> fa<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            fa<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>Find</span><span class=\&quot;token punctuation\&quot;>(</span>fa<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token keyword\&quot;>return</span> fa<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>Union</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> x<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> y<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token function\&quot;>Link</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>Find</span><span class=\&quot;token punctuation\&quot;>(</span>x<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token function\&quot;>Find</span><span class=\&quot;token punctuation\&quot;>(</span>y<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token keyword\&quot;>private</span><span class=\&quot;token operator\&quot;>:</span>\n    <span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>Link</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> x<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> y<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>r<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>></span> r<span class=\&quot;token punctuation\&quot;>[</span>y<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            fa<span class=\&quot;token punctuation\&quot;>[</span>y<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> x<span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token keyword\&quot;>else</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            fa<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> y<span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>r<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> r<span class=\&quot;token punctuation\&quot;>[</span>y<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n                r<span class=\&quot;token punctuation\&quot;>[</span>y<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token function\&quot;>cmp</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> a<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> b<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>return</span> w<span class=\&quot;token punctuation\&quot;>[</span>a<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>&amp;lt;</span> w<span class=\&quot;token punctuation\&quot;>[</span>b<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>kruskal</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    UnionFind <span class=\&quot;token function\&quot;>uf</span><span class=\&quot;token punctuation\&quot;>(</span>n<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> m<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        wr<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> i<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>int</span> ret <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token function\&quot;>sort</span><span class=\&quot;token punctuation\&quot;>(</span>wr<span class=\&quot;token punctuation\&quot;>,</span> wr<span class=\&quot;token operator\&quot;>+</span>m<span class=\&quot;token punctuation\&quot;>,</span> cmp<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> m<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>int</span> ed <span class=\&quot;token operator\&quot;>=</span> wr<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>uf<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>Find</span><span class=\&quot;token punctuation\&quot;>(</span>u<span class=\&quot;token punctuation\&quot;>[</span>ed<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>!=</span> uf<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>Find</span><span class=\&quot;token punctuation\&quot;>(</span>v<span class=\&quot;token punctuation\&quot;>[</span>ed<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            ret <span class=\&quot;token operator\&quot;>+=</span> w<span class=\&quot;token punctuation\&quot;>[</span>ed<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n            uf<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>Union</span><span class=\&quot;token punctuation\&quot;>(</span>u<span class=\&quot;token punctuation\&quot;>[</span>ed<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> v<span class=\&quot;token punctuation\&quot;>[</span>ed<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>return</span> ret<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>main</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> argc<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>char</span> <span class=\&quot;token operator\&quot;>*</span>argv<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>ifdef</span> <span class=\&quot;token expression\&quot;>ACM</span></span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;in\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;r\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdin</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>else</span></span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;agrinet.in\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;r\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdin</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;agrinet.out\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;w\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdout</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>endif</span> <span class=\&quot;token comment\&quot;>// ACM</span></span>\n\n    <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>n<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    m <span class=\&quot;token operator\&quot;>=</span> n <span class=\&quot;token operator\&quot;>*</span> <span class=\&quot;token punctuation\&quot;>(</span>n <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>/</span> <span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> j <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token keyword\&quot;>int</span> t<span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>t<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>i <span class=\&quot;token operator\&quot;>></span> j<span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token function\&quot;>addEdge</span><span class=\&quot;token punctuation\&quot;>(</span>i<span class=\&quot;token punctuation\&quot;>,</span> j<span class=\&quot;token punctuation\&quot;>,</span> t<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token function\&quot;>printf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token function\&quot;>kruskal</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>&quot;,&quot;plugins&quot;:{&quot;lineNumbers&quot;:true}}"><span class="token comment">/*ID: xjtuacm1PROG: agrinetLANG: C++*/</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;iostream&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;stack&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstring&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstdio&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;queue&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;algorithm&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;set&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;map&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;vector&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cmath&gt;</span></span><span class="token keyword">using</span> <span class="token keyword">namespace</span> std<span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> MAXDIS <span class="token operator">=</span> <span class="token number">100000</span> <span class="token operator">+</span> <span class="token number">10</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> N <span class="token operator">=</span> <span class="token number">100</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> M <span class="token operator">=</span> N <span class="token operator">*</span> <span class="token punctuation">(</span>N <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">;</span><span class="token keyword">int</span> n<span class="token punctuation">,</span> m<span class="token punctuation">;</span><span class="token keyword">int</span> e<span class="token punctuation">;</span><span class="token keyword">int</span> u<span class="token punctuation">[</span>M<span class="token punctuation">]</span><span class="token punctuation">,</span> v<span class="token punctuation">[</span>M<span class="token punctuation">]</span><span class="token punctuation">,</span> w<span class="token punctuation">[</span>M<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span> wr<span class="token punctuation">[</span>M<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">void</span> <span class="token function">initGraph</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    e <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">void</span> <span class="token function">addEdge</span><span class="token punctuation">(</span><span class="token keyword">int</span> x<span class="token punctuation">,</span> <span class="token keyword">int</span> y<span class="token punctuation">,</span> <span class="token keyword">int</span> cost<span class="token punctuation">)</span><span class="token punctuation">{</span>    u<span class="token punctuation">[</span>e<span class="token punctuation">]</span> <span class="token operator">=</span> x<span class="token punctuation">;</span>    v<span class="token punctuation">[</span>e<span class="token punctuation">]</span> <span class="token operator">=</span> y<span class="token punctuation">;</span>    w<span class="token punctuation">[</span>e<span class="token operator">++</span><span class="token punctuation">]</span> <span class="token operator">=</span> cost<span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">class</span> <span class="token class-name">UnionFind</span><span class="token punctuation">{</span>    <span class="token keyword">int</span> n<span class="token punctuation">;</span>    <span class="token keyword">int</span> fa<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">;</span>    <span class="token keyword">int</span> r<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">public</span><span class="token operator">:</span>    <span class="token function">UnionFind</span><span class="token punctuation">(</span><span class="token keyword">int</span> nn<span class="token punctuation">)</span>        <span class="token operator">:</span> <span class="token function">n</span><span class="token punctuation">(</span>nn<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">void</span> <span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token function">memset</span><span class="token punctuation">(</span>r<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token keyword">sizeof</span><span class="token punctuation">(</span>r<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>            fa<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> i<span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">int</span> <span class="token function">Find</span><span class="token punctuation">(</span><span class="token keyword">int</span> x<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>x <span class="token operator">!=</span> fa<span class="token punctuation">[</span>x<span class="token punctuation">]</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            fa<span class="token punctuation">[</span>x<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">Find</span><span class="token punctuation">(</span>fa<span class="token punctuation">[</span>x<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token keyword">return</span> fa<span class="token punctuation">[</span>x<span class="token punctuation">]</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">void</span> <span class="token function">Union</span><span class="token punctuation">(</span><span class="token keyword">int</span> x<span class="token punctuation">,</span> <span class="token keyword">int</span> y<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token function">Link</span><span class="token punctuation">(</span><span class="token function">Find</span><span class="token punctuation">(</span>x<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">Find</span><span class="token punctuation">(</span>y<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token keyword">private</span><span class="token operator">:</span>    <span class="token keyword">void</span> <span class="token function">Link</span><span class="token punctuation">(</span><span class="token keyword">int</span> x<span class="token punctuation">,</span> <span class="token keyword">int</span> y<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>r<span class="token punctuation">[</span>x<span class="token punctuation">]</span> <span class="token operator">&gt;</span> r<span class="token punctuation">[</span>y<span class="token punctuation">]</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            fa<span class="token punctuation">[</span>y<span class="token punctuation">]</span> <span class="token operator">=</span> x<span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token keyword">else</span>        <span class="token punctuation">{</span>            fa<span class="token punctuation">[</span>x<span class="token punctuation">]</span> <span class="token operator">=</span> y<span class="token punctuation">;</span>            <span class="token keyword">if</span><span class="token punctuation">(</span>r<span class="token punctuation">[</span>x<span class="token punctuation">]</span> <span class="token operator">==</span> r<span class="token punctuation">[</span>y<span class="token punctuation">]</span><span class="token punctuation">)</span>                r<span class="token punctuation">[</span>y<span class="token punctuation">]</span><span class="token operator">++</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">;</span><span class="token keyword">bool</span> <span class="token function">cmp</span><span class="token punctuation">(</span><span class="token keyword">int</span> a<span class="token punctuation">,</span> <span class="token keyword">int</span> b<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">return</span> w<span class="token punctuation">[</span>a<span class="token punctuation">]</span> <span class="token operator">&lt;</span> w<span class="token punctuation">[</span>b<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">int</span> <span class="token function">kruskal</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    UnionFind <span class="token function">uf</span><span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> m<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        wr<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> i<span class="token punctuation">;</span>    <span class="token keyword">int</span> ret <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>    <span class="token function">sort</span><span class="token punctuation">(</span>wr<span class="token punctuation">,</span> wr<span class="token operator">+</span>m<span class="token punctuation">,</span> cmp<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> m<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">int</span> ed <span class="token operator">=</span> wr<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>uf<span class="token punctuation">.</span><span class="token function">Find</span><span class="token punctuation">(</span>u<span class="token punctuation">[</span>ed<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">!=</span> uf<span class="token punctuation">.</span><span class="token function">Find</span><span class="token punctuation">(</span>v<span class="token punctuation">[</span>ed<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            ret <span class="token operator">+=</span> w<span class="token punctuation">[</span>ed<span class="token punctuation">]</span><span class="token punctuation">;</span>            uf<span class="token punctuation">.</span><span class="token function">Union</span><span class="token punctuation">(</span>u<span class="token punctuation">[</span>ed<span class="token punctuation">]</span><span class="token punctuation">,</span> v<span class="token punctuation">[</span>ed<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token keyword">return</span> ret<span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token keyword">int</span> argc<span class="token punctuation">,</span> <span class="token keyword">char</span> <span class="token operator">*</span>argv<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">ifdef</span> <span class="token expression">ACM</span></span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"in"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">,</span> <span class="token constant">stdin</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">else</span></span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"agrinet.in"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">,</span> <span class="token constant">stdin</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"agrinet.out"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">,</span> <span class="token constant">stdout</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">endif</span> <span class="token comment">// ACM</span></span>    <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>n<span class="token punctuation">)</span><span class="token punctuation">;</span>    m <span class="token operator">=</span> n <span class="token operator">*</span> <span class="token punctuation">(</span>n <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> j<span class="token operator">!=</span> n<span class="token punctuation">;</span> j<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token keyword">int</span> t<span class="token punctuation">;</span>            <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>t<span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token keyword">if</span><span class="token punctuation">(</span>i <span class="token operator">&gt;</span> j<span class="token punctuation">)</span>                <span class="token function">addEdge</span><span class="token punctuation">(</span>i<span class="token punctuation">,</span> j<span class="token punctuation">,</span> t<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%d\n"</span><span class="token punctuation">,</span> <span class="token function">kruskal</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>]]></content>
    
    
    <summary type="html">&lt;p&gt;标准的最小生成树，用了Kruskal算法，写了一个可以以后用的并查集类。&lt;/p&gt;
&lt;pre class=&quot;line-numbers language-cpp&quot; style=&quot;max-height: 30em&quot; data-prismjs-copy-timeout=&quot;500&quot; tabindex=&quot;0&quot;&gt;&lt;code id=&quot;eed0213e&quot; class=&quot;language-cpp&quot; data-prism-hydrate=&quot;{&amp;quot;element&amp;quot;:&amp;quot;eed0213e&amp;quot;,&amp;quot;language&amp;quot;:&amp;quot;cpp&amp;quot;,&amp;quot;code&amp;quot;:&amp;quot;/*&#92;nID: xjtuacm1&#92;nPROG: agrinet&#92;nLANG: C++&#92;n*/&#92;n#include&#92;u003ciostream&#92;u003e&#92;n#include&lt;stack&gt;&#92;n#include&lt;cstring&gt;&#92;n#include&lt;cstdio&gt;&#92;n#include&lt;queue&gt;&#92;n#include&lt;algorithm&gt;&#92;n#include&lt;set&gt;&#92;n#include&lt;map&gt;&#92;n#include&lt;vector&gt;&#92;n#include&lt;cmath&gt;&#92;nusing namespace std;&#92;nconst int MAXDIS = 100000 + 10;&#92;nconst int N = 100;&#92;nconst int M = N * (N - 1) / 2;&#92;n&#92;nint n, m;&#92;nint e;&#92;nint u[M], v[M], w[M];&#92;n&#92;nint wr[M];&#92;n&#92;nvoid initGraph()&#92;n{&#92;n    e = 0;&#92;n}&#92;n&#92;nvoid addEdge(int x, int y, int cost)&#92;n{&#92;n    u[e] = x;&#92;n    v[e] = y;&#92;n    w[e++] = cost;&#92;n}&#92;n&#92;nclass UnionFind&#92;n{&#92;n    int n;&#92;n    int fa[N];&#92;n    int r[N];&#92;n&#92;npublic:&#92;n    UnionFind(int nn)&#92;n        : n(nn)&#92;n    {&#92;n        init();&#92;n    }&#92;n&#92;n    void init()&#92;n    {&#92;n        memset(r, 0, sizeof(r));&#92;n        for(int i = 0; i!= n; i++)&#92;n            fa[i] = i;&#92;n    }&#92;n&#92;n    int Find(int x)&#92;n    {&#92;n        if(x != fa[x])&#92;n        {&#92;n            fa[x] = Find(fa[x]);&#92;n        }&#92;n        return fa[x];&#92;n    }&#92;n&#92;n    void Union(int x, int y)&#92;n    {&#92;n        Link(Find(x), Find(y));&#92;n    }&#92;nprivate:&#92;n    void Link(int x, int y)&#92;n    {&#92;n        if(r[x] &gt; r[y])&#92;n        {&#92;n            fa[y] = x;&#92;n        }&#92;n        else&#92;n        {&#92;n            fa[x] = y;&#92;n            if(r[x] == r[y])&#92;n                r[y]++;&#92;n        }&#92;n    }&#92;n};&#92;n&#92;nbool cmp(int a, int b)&#92;n{&#92;n    return w[a] &lt; w[b];&#92;n}&#92;n&#92;nint kruskal()&#92;n{&#92;n    UnionFind uf(n);&#92;n    for(int i = 0; i!= m; i++)&#92;n        wr[i] = i;&#92;n    int ret = 0;&#92;n&#92;n    sort(wr, wr+m, cmp);&#92;n&#92;n    for(int i = 0; i!= m; i++)&#92;n    {&#92;n        int ed = wr[i];&#92;n        if(uf.Find(u[ed]) != uf.Find(v[ed]))&#92;n        {&#92;n            ret += w[ed];&#92;n            uf.Union(u[ed], v[ed]);&#92;n        }&#92;n    }&#92;n&#92;n    return ret;&#92;n}&#92;n&#92;nint main(int argc, char *argv[])&#92;n{&#92;n#ifdef ACM&#92;n    freopen(&#92;&amp;quot;in&#92;&amp;quot;, &#92;&amp;quot;r&#92;&amp;quot;, stdin);&#92;n#else&#92;n    freopen(&#92;&amp;quot;agrinet.in&#92;&amp;quot;, &#92;&amp;quot;r&#92;&amp;quot;, stdin);&#92;n    freopen(&#92;&amp;quot;agrinet.out&#92;&amp;quot;, &#92;&amp;quot;w&#92;&amp;quot;, stdout);&#92;n#endif // ACM&#92;n&#92;n    scanf(&#92;&amp;quot;%d&#92;&amp;quot;, &#92;u0026n);&#92;n    m = n * (n - 1) / 2;&#92;n    for(int i = 0; i!= n; i++)&#92;n        for(int j = 0; j!= n; j++)&#92;n        {&#92;n            int t;&#92;n            scanf(&#92;&amp;quot;%d&#92;&amp;quot;, &amp;amp;t);&#92;n            if(i &gt; j)&#92;n                addEdge(i, j, t);&#92;n        }&#92;n&#92;n    printf(&#92;&amp;quot;%d&#92;&#92;n&#92;&amp;quot;, kruskal());&#92;n&#92;n    return 0;&#92;n}&amp;quot;,&amp;quot;settings&amp;quot;:{},&amp;quot;vars&amp;quot;:{&amp;quot;command-line&amp;quot;:{&amp;quot;complete&amp;quot;:true}},&amp;quot;highlightedCode&amp;quot;:&amp;quot;&lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;/*&#92;nID: xjtuacm1&#92;nPROG: agrinet&#92;nLANG: C++&#92;n*/&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;iostream&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;stack&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cstring&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cstdio&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;queue&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;algorithm&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;set&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;map&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;vector&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cmath&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;using&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;namespace&lt;/span&gt; std&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; MAXDIS &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;100000&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;10&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; N &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;100&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; M &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; N &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;N &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;/&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; m&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;M&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;M&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;M&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; wr&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;M&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;initGraph&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    e &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;addEdge&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; cost&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;e&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; cost&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;class&lt;/span&gt; &lt;span class=&#92;&amp;quot;token class-name&#92;&amp;quot;&gt;UnionFind&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; fa&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;public&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;:&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;UnionFind&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; nn&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;:&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;n&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;nn&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;init&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;init&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;memset&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;sizeof&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            fa&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Find&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;x &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; fa&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            fa&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Find&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;fa&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; fa&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Union&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Link&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Find&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Find&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;private&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;:&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Link&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt; r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            fa&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;else&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            fa&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;bool&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;cmp&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt; w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;kruskal&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    UnionFind &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;uf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; m&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        wr&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; ret &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;sort&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;wr&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; wr&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt;m&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; cmp&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; m&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; ed &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; wr&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;uf&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Find&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;ed&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; uf&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Find&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;ed&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            ret &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+=&lt;/span&gt; w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;ed&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            uf&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Union&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;ed&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;ed&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; ret&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;main&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; argc&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;argv&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;ifdef&lt;/span&gt; &lt;span class=&#92;&amp;quot;token expression&#92;&amp;quot;&gt;ACM&lt;/span&gt;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;in&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;r&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdin&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;else&lt;/span&gt;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;agrinet.in&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;r&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdin&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;agrinet.out&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;w&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdout&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;endif&lt;/span&gt; &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// ACM&lt;/span&gt;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;scanf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    m &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; n &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;n &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;/&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;scanf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;addEdge&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;printf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d&#92;&#92;n&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;kruskal&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&amp;quot;,&amp;quot;plugins&amp;quot;:{&amp;quot;lineNumbers&amp;quot;:true}}&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/*
ID: xjtuacm1
PROG: agrinet
LANG: C++
*/&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;stack&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cstring&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cstdio&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;queue&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;algorithm&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;set&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;map&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;vector&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cmath&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;namespace&lt;/span&gt; std&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; MAXDIS &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100000&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; N &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; M &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; N &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;N &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; m&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; e&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; u&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;M&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;M&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;M&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; wr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;M&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;initGraph&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    e &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;addEdge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; y&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; cost&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    u&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    v&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; y&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    w&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;e&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; cost&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;UnionFind&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; fa&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;UnionFind&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; nn&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;nn&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;memset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            fa&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; fa&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            fa&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fa&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; fa&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Union&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;Link&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Link&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            fa&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            fa&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; y&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                r&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;cmp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;kruskal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    UnionFind &lt;span class=&quot;token function&quot;&gt;uf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; m&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        wr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; ret &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;sort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;wr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; wr&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;m&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cmp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; m&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; ed &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; wr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;uf&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;u&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;ed&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; uf&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;ed&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            ret &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;ed&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            uf&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Union&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;u&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;ed&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;ed&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; argc&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;argv&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifdef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;ACM&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;in&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;else&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;agrinet.in&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;agrinet.out&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;w&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdout&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// ACM&lt;/span&gt;&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    m &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; n &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; j&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;addEdge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&#92;n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;kruskal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</summary>
    
    
    
    
    <category term="ACM" scheme="https://unlimited-code.works/tags/acm/"/>
    
    <category term="Union-Find" scheme="https://unlimited-code.works/tags/union-find/"/>
    
    <category term="USACO" scheme="https://unlimited-code.works/tags/usaco/"/>
    
    <category term="MST" scheme="https://unlimited-code.works/tags/mst/"/>
    
    <category term="Kruskal" scheme="https://unlimited-code.works/tags/kruskal/"/>
    
  </entry>
  
  <entry>
    <title>USACO 2.4.3 Cow Tours</title>
    <link href="https://unlimited-code.works/blog/2013/02/15/usaco-2-4-3/"/>
    <id>https://unlimited-code.works/blog/2013/02/15/usaco-2-4-3/</id>
    <published>2013-02-16T04:46:00.000Z</published>
    <updated>2025-08-09T21:29:05.000Z</updated>
    
    <content type="html"><![CDATA[<p>floyd + dfs染色。</p><p>重点是添加新的边之后的field的直径等于</p><p>1.原来两个field的直径2.新的边长加从它的两个端点可以延伸的最大长度</p><p>这其中的最大值。</p><pre class="line-numbers language-cpp" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="d6a5423f" class="language-cpp" data-prism-hydrate="{&quot;element&quot;:&quot;d6a5423f&quot;,&quot;language&quot;:&quot;cpp&quot;,&quot;code&quot;:&quot;/*\nID: xjtuacm1\nPROG: cowtour\nLANG: C++\n*/\n#include\u003ciostream\u003e\n#include<stack>\n#include<cstring>\n#include<cstdio>\n#include<queue>\n#include<algorithm>\n#include<set>\n#include<map>\n#include<vector>\n#include<cmath>\nusing namespace std;\nconst int N = 150;\nconst double DINF = 1e30;\n\nstruct Point\n{\n    int x, y;\n} pes[N];\n\nint adj[N][N];\nint color[N];\n\ndouble dis[N][N];\ndouble maxDis[N];\ndouble dia[N];\nint n;\n\nvoid floodfill(int cur, int tag)\n{\n    color[cur] = tag;\n    for(int i = 0; i!= n; i++)\n    {\n        if(adj[cur][i] \u0026&amp; color[i] == -1)\n        {\n            floodfill(i, tag);\n        }\n    }\n}\n\nint find_component()\n{\n    int cnt = 0;\n    for(int i = 0; i < n; i++)\n        if(color[i] == -1)\n            floodfill(i, cnt++);\n    return cnt;\n}\n\ndouble dist(int a, int b)\n{\n    if(!adj[a][b])\n        return DINF;\n\n    return sqrt((pes[a].x - pes[b].x) * (pes[a].x - pes[b].x)\n                + (pes[a].y - pes[b].y) * (pes[a].y - pes[b].y));\n}\n\nvoid floyd()\n{\n    for(int i = 0; i!= n; i++)\n        for(int j = 0; j!= n; j++)\n            dis[i][j] = dist(i, j);\n\n    for(int k = 0; k!= n; k++)\n        for(int i = 0; i!= n; i++)\n            for(int j = 0; j!= n; j++)\n                dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);\n}\n\nint main(int argc, char *argv[])\n{\n#ifdef ACM\n    freopen(\&quot;in\&quot;, \&quot;r\&quot;, stdin);\n#else\n    freopen(\&quot;cowtour.in\&quot;, \&quot;r\&quot;, stdin);\n    freopen(\&quot;cowtour.out\&quot;, \&quot;w\&quot;, stdout);\n#endif // ACM\n\n    scanf(\&quot;%d\\n\&quot;, &amp;n);\n    for(int i = 0; i!= n; i++)\n    {\n        scanf(\&quot;%d %d\\n\&quot;, &amp;pes[i].x, &amp;pes[i].y);\n    }\n    for(int i = 0; i!= n; i++)\n    {\n        char line[N + 1];\n        gets(line);\n        for(int j = 0; j!= n; j++)\n        {\n            adj[i][j] = (line[j] == \u00270'? 0 : 1);\n\n            dis[i][j] = dist(i, j);\n\n        }\n    }\n\n    memset(color, -1, sizeof(color));\n    int ncom = find_component();\n    floyd();\n\n    for(int i = 0; i!= ncom; i++)\n        dia[i] = 0;\n\n    for(int i = 0; i!= n; i++)\n    {\n        maxDis[i] = 0;\n        for(int j = 0; j!= n; j++)\n        {\n            if(i!= j &amp;&amp; color[i] == color[j])\n            {\n                maxDis[i] = max(maxDis[i], dis[i][j]);\n            }\n        }\n\n        dia[color[i]] = max(dia[color[i]], maxDis[i]);\n    }\n\n    double diameter = DINF;\n    for(int i = 0; i!= n; i++)\n        for(int j = 0; j!= n; j++)\n    {\n        if(color[i] == color[j])\n            continue;\n\n        double d1 = 0;\n        double d2 = 0;\n        for(int k = 0; k!= n; k++)\n        {\n            if(i != k &amp;&amp; color[i] == color[k])\n                d1 = max(d1, dis[i][k]);\n\n            if(j != k &amp;&amp; color[j] == color[k])\n                d2 = max(d2, dis[j][k]);\n        }\n\n        double dist = sqrt( (pes[i].x - pes[j].x) * (pes[i].x - pes[j].x)\n                           + (pes[i].y - pes[j].y) * (pes[i].y - pes[j].y) );\n\n        diameter = min(diameter,\n                       max(dist + d1 + d2,\n                           max(dia[color[i]], dia[color[j]])));\n    }\n\n    printf(\&quot;%.6lf\\n\&quot;, diameter);\n\n    return 0;\n}&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;<span class=\&quot;token comment\&quot;>/*\nID: xjtuacm1\nPROG: cowtour\nLANG: C++\n*/</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;iostream></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;stack></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstring></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstdio></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;queue></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;algorithm></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;set></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;map></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;vector></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cmath></span></span>\n<span class=\&quot;token keyword\&quot;>using</span> <span class=\&quot;token keyword\&quot;>namespace</span> std<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> N <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>150</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>double</span> DINF <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1e30</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>struct</span> <span class=\&quot;token class-name\&quot;>Point</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>int</span> x<span class=\&quot;token punctuation\&quot;>,</span> y<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span> pes<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> adj<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> color<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>double</span> dis<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>double</span> maxDis<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>double</span> dia<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> n<span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>floodfill</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> cur<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> tag<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    color<span class=\&quot;token punctuation\&quot;>[</span>cur<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> tag<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>adj<span class=\&quot;token punctuation\&quot;>[</span>cur<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>&amp;amp;&amp;amp;</span> color<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token function\&quot;>floodfill</span><span class=\&quot;token punctuation\&quot;>(</span>i<span class=\&quot;token punctuation\&quot;>,</span> tag<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>find_component</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>int</span> cnt <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i <span class=\&quot;token operator\&quot;>&amp;lt;</span> n<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>color<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token function\&quot;>floodfill</span><span class=\&quot;token punctuation\&quot;>(</span>i<span class=\&quot;token punctuation\&quot;>,</span> cnt<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>return</span> cnt<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>double</span> <span class=\&quot;token function\&quot;>dist</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> a<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> b<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>!</span>adj<span class=\&quot;token punctuation\&quot;>[</span>a<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>b<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token keyword\&quot;>return</span> DINF<span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token function\&quot;>sqrt</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>(</span>pes<span class=\&quot;token punctuation\&quot;>[</span>a<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>x <span class=\&quot;token operator\&quot;>-</span> pes<span class=\&quot;token punctuation\&quot;>[</span>b<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>*</span> <span class=\&quot;token punctuation\&quot;>(</span>pes<span class=\&quot;token punctuation\&quot;>[</span>a<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>x <span class=\&quot;token operator\&quot;>-</span> pes<span class=\&quot;token punctuation\&quot;>[</span>b<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token punctuation\&quot;>(</span>pes<span class=\&quot;token punctuation\&quot;>[</span>a<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>y <span class=\&quot;token operator\&quot;>-</span> pes<span class=\&quot;token punctuation\&quot;>[</span>b<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>*</span> <span class=\&quot;token punctuation\&quot;>(</span>pes<span class=\&quot;token punctuation\&quot;>[</span>a<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>y <span class=\&quot;token operator\&quot;>-</span> pes<span class=\&quot;token punctuation\&quot;>[</span>b<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>floyd</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> j <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n            dis<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>dist</span><span class=\&quot;token punctuation\&quot;>(</span>i<span class=\&quot;token punctuation\&quot;>,</span> j<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> k <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> k<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> k<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> j <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n                dis<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>min</span><span class=\&quot;token punctuation\&quot;>(</span>dis<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> dis<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>k<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>+</span> dis<span class=\&quot;token punctuation\&quot;>[</span>k<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>main</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> argc<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>char</span> <span class=\&quot;token operator\&quot;>*</span>argv<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>ifdef</span> <span class=\&quot;token expression\&quot;>ACM</span></span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;in\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;r\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdin</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>else</span></span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;cowtour.in\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;r\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdin</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;cowtour.out\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;w\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdout</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>endif</span> <span class=\&quot;token comment\&quot;>// ACM</span></span>\n\n    <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>n<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d %d\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>pes<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>pes<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>char</span> line<span class=\&quot;token punctuation\&quot;>[</span>N <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token function\&quot;>gets</span><span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> j <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            adj<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token char\&quot;>'0'</span><span class=\&quot;token operator\&quot;>?</span> <span class=\&quot;token number\&quot;>0</span> <span class=\&quot;token operator\&quot;>:</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n            dis<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>dist</span><span class=\&quot;token punctuation\&quot;>(</span>i<span class=\&quot;token punctuation\&quot;>,</span> j<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token function\&quot;>memset</span><span class=\&quot;token punctuation\&quot;>(</span>color<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>sizeof</span><span class=\&quot;token punctuation\&quot;>(</span>color<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>int</span> ncom <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>find_component</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>floyd</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> ncom<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        dia<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        maxDis<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> j <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>i<span class=\&quot;token operator\&quot;>!=</span> j <span class=\&quot;token operator\&quot;>&amp;amp;&amp;amp;</span> color<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> color<span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                maxDis<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>max</span><span class=\&quot;token punctuation\&quot;>(</span>maxDis<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> dis<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n\n        dia<span class=\&quot;token punctuation\&quot;>[</span>color<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>max</span><span class=\&quot;token punctuation\&quot;>(</span>dia<span class=\&quot;token punctuation\&quot;>[</span>color<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> maxDis<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>double</span> diameter <span class=\&quot;token operator\&quot;>=</span> DINF<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> j <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>color<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> color<span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token keyword\&quot;>continue</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n        <span class=\&quot;token keyword\&quot;>double</span> d1 <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>double</span> d2 <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> k <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> k<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> k<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>i <span class=\&quot;token operator\&quot;>!=</span> k <span class=\&quot;token operator\&quot;>&amp;amp;&amp;amp;</span> color<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> color<span class=\&quot;token punctuation\&quot;>[</span>k<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n                d1 <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>max</span><span class=\&quot;token punctuation\&quot;>(</span>d1<span class=\&quot;token punctuation\&quot;>,</span> dis<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>k<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n            <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>j <span class=\&quot;token operator\&quot;>!=</span> k <span class=\&quot;token operator\&quot;>&amp;amp;&amp;amp;</span> color<span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> color<span class=\&quot;token punctuation\&quot;>[</span>k<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n                d2 <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>max</span><span class=\&quot;token punctuation\&quot;>(</span>d2<span class=\&quot;token punctuation\&quot;>,</span> dis<span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>k<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n\n        <span class=\&quot;token keyword\&quot;>double</span> dist <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>sqrt</span><span class=\&quot;token punctuation\&quot;>(</span> <span class=\&quot;token punctuation\&quot;>(</span>pes<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>x <span class=\&quot;token operator\&quot;>-</span> pes<span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>*</span> <span class=\&quot;token punctuation\&quot;>(</span>pes<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>x <span class=\&quot;token operator\&quot;>-</span> pes<span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>)</span>\n                           <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token punctuation\&quot;>(</span>pes<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>y <span class=\&quot;token operator\&quot;>-</span> pes<span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>*</span> <span class=\&quot;token punctuation\&quot;>(</span>pes<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>y <span class=\&quot;token operator\&quot;>-</span> pes<span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n        diameter <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>min</span><span class=\&quot;token punctuation\&quot;>(</span>diameter<span class=\&quot;token punctuation\&quot;>,</span>\n                       <span class=\&quot;token function\&quot;>max</span><span class=\&quot;token punctuation\&quot;>(</span>dist <span class=\&quot;token operator\&quot;>+</span> d1 <span class=\&quot;token operator\&quot;>+</span> d2<span class=\&quot;token punctuation\&quot;>,</span>\n                           <span class=\&quot;token function\&quot;>max</span><span class=\&quot;token punctuation\&quot;>(</span>dia<span class=\&quot;token punctuation\&quot;>[</span>color<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> dia<span class=\&quot;token punctuation\&quot;>[</span>color<span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token function\&quot;>printf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%.6lf\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> diameter<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>&quot;,&quot;plugins&quot;:{&quot;lineNumbers&quot;:true}}"><span class="token comment">/*ID: xjtuacm1PROG: cowtourLANG: C++*/</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;iostream&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;stack&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstring&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstdio&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;queue&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;algorithm&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;set&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;map&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;vector&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cmath&gt;</span></span><span class="token keyword">using</span> <span class="token keyword">namespace</span> std<span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> N <span class="token operator">=</span> <span class="token number">150</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">double</span> DINF <span class="token operator">=</span> <span class="token number">1e30</span><span class="token punctuation">;</span><span class="token keyword">struct</span> <span class="token class-name">Point</span><span class="token punctuation">{</span>    <span class="token keyword">int</span> x<span class="token punctuation">,</span> y<span class="token punctuation">;</span><span class="token punctuation">}</span> pes<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span> adj<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span> color<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">double</span> dis<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">double</span> maxDis<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">double</span> dia<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span> n<span class="token punctuation">;</span><span class="token keyword">void</span> <span class="token function">floodfill</span><span class="token punctuation">(</span><span class="token keyword">int</span> cur<span class="token punctuation">,</span> <span class="token keyword">int</span> tag<span class="token punctuation">)</span><span class="token punctuation">{</span>    color<span class="token punctuation">[</span>cur<span class="token punctuation">]</span> <span class="token operator">=</span> tag<span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>adj<span class="token punctuation">[</span>cur<span class="token punctuation">]</span><span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> color<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token function">floodfill</span><span class="token punctuation">(</span>i<span class="token punctuation">,</span> tag<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token keyword">int</span> <span class="token function">find_component</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">int</span> cnt <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>color<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span>            <span class="token function">floodfill</span><span class="token punctuation">(</span>i<span class="token punctuation">,</span> cnt<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">return</span> cnt<span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">double</span> <span class="token function">dist</span><span class="token punctuation">(</span><span class="token keyword">int</span> a<span class="token punctuation">,</span> <span class="token keyword">int</span> b<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span>adj<span class="token punctuation">[</span>a<span class="token punctuation">]</span><span class="token punctuation">[</span>b<span class="token punctuation">]</span><span class="token punctuation">)</span>        <span class="token keyword">return</span> DINF<span class="token punctuation">;</span>    <span class="token keyword">return</span> <span class="token function">sqrt</span><span class="token punctuation">(</span><span class="token punctuation">(</span>pes<span class="token punctuation">[</span>a<span class="token punctuation">]</span><span class="token punctuation">.</span>x <span class="token operator">-</span> pes<span class="token punctuation">[</span>b<span class="token punctuation">]</span><span class="token punctuation">.</span>x<span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token punctuation">(</span>pes<span class="token punctuation">[</span>a<span class="token punctuation">]</span><span class="token punctuation">.</span>x <span class="token operator">-</span> pes<span class="token punctuation">[</span>b<span class="token punctuation">]</span><span class="token punctuation">.</span>x<span class="token punctuation">)</span>                <span class="token operator">+</span> <span class="token punctuation">(</span>pes<span class="token punctuation">[</span>a<span class="token punctuation">]</span><span class="token punctuation">.</span>y <span class="token operator">-</span> pes<span class="token punctuation">[</span>b<span class="token punctuation">]</span><span class="token punctuation">.</span>y<span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token punctuation">(</span>pes<span class="token punctuation">[</span>a<span class="token punctuation">]</span><span class="token punctuation">.</span>y <span class="token operator">-</span> pes<span class="token punctuation">[</span>b<span class="token punctuation">]</span><span class="token punctuation">.</span>y<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">void</span> <span class="token function">floyd</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> j<span class="token operator">!=</span> n<span class="token punctuation">;</span> j<span class="token operator">++</span><span class="token punctuation">)</span>            dis<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">dist</span><span class="token punctuation">(</span>i<span class="token punctuation">,</span> j<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> k <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> k<span class="token operator">!=</span> n<span class="token punctuation">;</span> k<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>            <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> j<span class="token operator">!=</span> n<span class="token punctuation">;</span> j<span class="token operator">++</span><span class="token punctuation">)</span>                dis<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">min</span><span class="token punctuation">(</span>dis<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">,</span> dis<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>k<span class="token punctuation">]</span> <span class="token operator">+</span> dis<span class="token punctuation">[</span>k<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token keyword">int</span> argc<span class="token punctuation">,</span> <span class="token keyword">char</span> <span class="token operator">*</span>argv<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">ifdef</span> <span class="token expression">ACM</span></span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"in"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">,</span> <span class="token constant">stdin</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">else</span></span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"cowtour.in"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">,</span> <span class="token constant">stdin</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"cowtour.out"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">,</span> <span class="token constant">stdout</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">endif</span> <span class="token comment">// ACM</span></span>    <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d\n"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>n<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d %d\n"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>pes<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>x<span class="token punctuation">,</span> <span class="token operator">&amp;</span>pes<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>y<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">char</span> line<span class="token punctuation">[</span>N <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span>        <span class="token function">gets</span><span class="token punctuation">(</span>line<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> j<span class="token operator">!=</span> n<span class="token punctuation">;</span> j<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            adj<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">(</span>line<span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token char">'0'</span><span class="token operator">?</span> <span class="token number">0</span> <span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>            dis<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">dist</span><span class="token punctuation">(</span>i<span class="token punctuation">,</span> j<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token function">memset</span><span class="token punctuation">(</span>color<span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token keyword">sizeof</span><span class="token punctuation">(</span>color<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">int</span> ncom <span class="token operator">=</span> <span class="token function">find_component</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token function">floyd</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> ncom<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        dia<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        maxDis<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> j<span class="token operator">!=</span> n<span class="token punctuation">;</span> j<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token keyword">if</span><span class="token punctuation">(</span>i<span class="token operator">!=</span> j <span class="token operator">&amp;&amp;</span> color<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">==</span> color<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                maxDis<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">max</span><span class="token punctuation">(</span>maxDis<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">,</span> dis<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token punctuation">}</span>        <span class="token punctuation">}</span>        dia<span class="token punctuation">[</span>color<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">max</span><span class="token punctuation">(</span>dia<span class="token punctuation">[</span>color<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span> maxDis<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">double</span> diameter <span class="token operator">=</span> DINF<span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> j<span class="token operator">!=</span> n<span class="token punctuation">;</span> j<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>color<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">==</span> color<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">)</span>            <span class="token keyword">continue</span><span class="token punctuation">;</span>        <span class="token keyword">double</span> d1 <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>        <span class="token keyword">double</span> d2 <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> k <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> k<span class="token operator">!=</span> n<span class="token punctuation">;</span> k<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token keyword">if</span><span class="token punctuation">(</span>i <span class="token operator">!=</span> k <span class="token operator">&amp;&amp;</span> color<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">==</span> color<span class="token punctuation">[</span>k<span class="token punctuation">]</span><span class="token punctuation">)</span>                d1 <span class="token operator">=</span> <span class="token function">max</span><span class="token punctuation">(</span>d1<span class="token punctuation">,</span> dis<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>k<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token keyword">if</span><span class="token punctuation">(</span>j <span class="token operator">!=</span> k <span class="token operator">&amp;&amp;</span> color<span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">==</span> color<span class="token punctuation">[</span>k<span class="token punctuation">]</span><span class="token punctuation">)</span>                d2 <span class="token operator">=</span> <span class="token function">max</span><span class="token punctuation">(</span>d2<span class="token punctuation">,</span> dis<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">[</span>k<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token keyword">double</span> dist <span class="token operator">=</span> <span class="token function">sqrt</span><span class="token punctuation">(</span> <span class="token punctuation">(</span>pes<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>x <span class="token operator">-</span> pes<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">.</span>x<span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token punctuation">(</span>pes<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>x <span class="token operator">-</span> pes<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">.</span>x<span class="token punctuation">)</span>                           <span class="token operator">+</span> <span class="token punctuation">(</span>pes<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>y <span class="token operator">-</span> pes<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">.</span>y<span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token punctuation">(</span>pes<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>y <span class="token operator">-</span> pes<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">.</span>y<span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>        diameter <span class="token operator">=</span> <span class="token function">min</span><span class="token punctuation">(</span>diameter<span class="token punctuation">,</span>                       <span class="token function">max</span><span class="token punctuation">(</span>dist <span class="token operator">+</span> d1 <span class="token operator">+</span> d2<span class="token punctuation">,</span>                           <span class="token function">max</span><span class="token punctuation">(</span>dia<span class="token punctuation">[</span>color<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span> dia<span class="token punctuation">[</span>color<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%.6lf\n"</span><span class="token punctuation">,</span> diameter<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>BTW，对复杂代码的掌控能力还是不够。。虽然这道题有了完整思路，但是写不出完整的代码，最后还是参考了题解才写完…</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;floyd + dfs染色。&lt;/p&gt;
&lt;p&gt;重点是添加新的边之后的field的直径等于&lt;/p&gt;
&lt;p&gt;1.原来两个field的直径
2.新的边长加从它的两个端点可以延伸的最大长度&lt;/p&gt;
&lt;p&gt;这其中的最大值。&lt;/p&gt;
&lt;pre class=&quot;line-numbers language-cpp&quot; style=&quot;max-height: 30em&quot; data-prismjs-copy-timeout=&quot;500&quot; tabindex=&quot;0&quot;&gt;&lt;code id=&quot;d6a5423f&quot; class=&quot;language-cpp&quot; data-prism-hydrate=&quot;{&amp;quot;element&amp;quot;:&amp;quot;d6a5423f&amp;quot;,&amp;quot;language&amp;quot;:&amp;quot;cpp&amp;quot;,&amp;quot;code&amp;quot;:&amp;quot;/*&#92;nID: xjtuacm1&#92;nPROG: cowtour&#92;nLANG: C++&#92;n*/&#92;n#include&#92;u003ciostream&#92;u003e&#92;n#include&lt;stack&gt;&#92;n#include&lt;cstring&gt;&#92;n#include&lt;cstdio&gt;&#92;n#include&lt;queue&gt;&#92;n#include&lt;algorithm&gt;&#92;n#include&lt;set&gt;&#92;n#include&lt;map&gt;&#92;n#include&lt;vector&gt;&#92;n#include&lt;cmath&gt;&#92;nusing namespace std;&#92;nconst int N = 150;&#92;nconst double DINF = 1e30;&#92;n&#92;nstruct Point&#92;n{&#92;n    int x, y;&#92;n} pes[N];&#92;n&#92;nint adj[N][N];&#92;nint color[N];&#92;n&#92;ndouble dis[N][N];&#92;ndouble maxDis[N];&#92;ndouble dia[N];&#92;nint n;&#92;n&#92;nvoid floodfill(int cur, int tag)&#92;n{&#92;n    color[cur] = tag;&#92;n    for(int i = 0; i!= n; i++)&#92;n    {&#92;n        if(adj[cur][i] &#92;u0026&amp;amp; color[i] == -1)&#92;n        {&#92;n            floodfill(i, tag);&#92;n        }&#92;n    }&#92;n}&#92;n&#92;nint find_component()&#92;n{&#92;n    int cnt = 0;&#92;n    for(int i = 0; i &lt; n; i++)&#92;n        if(color[i] == -1)&#92;n            floodfill(i, cnt++);&#92;n    return cnt;&#92;n}&#92;n&#92;ndouble dist(int a, int b)&#92;n{&#92;n    if(!adj[a][b])&#92;n        return DINF;&#92;n&#92;n    return sqrt((pes[a].x - pes[b].x) * (pes[a].x - pes[b].x)&#92;n                + (pes[a].y - pes[b].y) * (pes[a].y - pes[b].y));&#92;n}&#92;n&#92;nvoid floyd()&#92;n{&#92;n    for(int i = 0; i!= n; i++)&#92;n        for(int j = 0; j!= n; j++)&#92;n            dis[i][j] = dist(i, j);&#92;n&#92;n    for(int k = 0; k!= n; k++)&#92;n        for(int i = 0; i!= n; i++)&#92;n            for(int j = 0; j!= n; j++)&#92;n                dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);&#92;n}&#92;n&#92;nint main(int argc, char *argv[])&#92;n{&#92;n#ifdef ACM&#92;n    freopen(&#92;&amp;quot;in&#92;&amp;quot;, &#92;&amp;quot;r&#92;&amp;quot;, stdin);&#92;n#else&#92;n    freopen(&#92;&amp;quot;cowtour.in&#92;&amp;quot;, &#92;&amp;quot;r&#92;&amp;quot;, stdin);&#92;n    freopen(&#92;&amp;quot;cowtour.out&#92;&amp;quot;, &#92;&amp;quot;w&#92;&amp;quot;, stdout);&#92;n#endif // ACM&#92;n&#92;n    scanf(&#92;&amp;quot;%d&#92;&#92;n&#92;&amp;quot;, &amp;amp;n);&#92;n    for(int i = 0; i!= n; i++)&#92;n    {&#92;n        scanf(&#92;&amp;quot;%d %d&#92;&#92;n&#92;&amp;quot;, &amp;amp;pes[i].x, &amp;amp;pes[i].y);&#92;n    }&#92;n    for(int i = 0; i!= n; i++)&#92;n    {&#92;n        char line[N + 1];&#92;n        gets(line);&#92;n        for(int j = 0; j!= n; j++)&#92;n        {&#92;n            adj[i][j] = (line[j] == &#92;u00270&#39;? 0 : 1);&#92;n&#92;n            dis[i][j] = dist(i, j);&#92;n&#92;n        }&#92;n    }&#92;n&#92;n    memset(color, -1, sizeof(color));&#92;n    int ncom = find_component();&#92;n    floyd();&#92;n&#92;n    for(int i = 0; i!= ncom; i++)&#92;n        dia[i] = 0;&#92;n&#92;n    for(int i = 0; i!= n; i++)&#92;n    {&#92;n        maxDis[i] = 0;&#92;n        for(int j = 0; j!= n; j++)&#92;n        {&#92;n            if(i!= j &amp;amp;&amp;amp; color[i] == color[j])&#92;n            {&#92;n                maxDis[i] = max(maxDis[i], dis[i][j]);&#92;n            }&#92;n        }&#92;n&#92;n        dia[color[i]] = max(dia[color[i]], maxDis[i]);&#92;n    }&#92;n&#92;n    double diameter = DINF;&#92;n    for(int i = 0; i!= n; i++)&#92;n        for(int j = 0; j!= n; j++)&#92;n    {&#92;n        if(color[i] == color[j])&#92;n            continue;&#92;n&#92;n        double d1 = 0;&#92;n        double d2 = 0;&#92;n        for(int k = 0; k!= n; k++)&#92;n        {&#92;n            if(i != k &amp;amp;&amp;amp; color[i] == color[k])&#92;n                d1 = max(d1, dis[i][k]);&#92;n&#92;n            if(j != k &amp;amp;&amp;amp; color[j] == color[k])&#92;n                d2 = max(d2, dis[j][k]);&#92;n        }&#92;n&#92;n        double dist = sqrt( (pes[i].x - pes[j].x) * (pes[i].x - pes[j].x)&#92;n                           + (pes[i].y - pes[j].y) * (pes[i].y - pes[j].y) );&#92;n&#92;n        diameter = min(diameter,&#92;n                       max(dist + d1 + d2,&#92;n                           max(dia[color[i]], dia[color[j]])));&#92;n    }&#92;n&#92;n    printf(&#92;&amp;quot;%.6lf&#92;&#92;n&#92;&amp;quot;, diameter);&#92;n&#92;n    return 0;&#92;n}&amp;quot;,&amp;quot;settings&amp;quot;:{},&amp;quot;vars&amp;quot;:{&amp;quot;command-line&amp;quot;:{&amp;quot;complete&amp;quot;:true}},&amp;quot;highlightedCode&amp;quot;:&amp;quot;&lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;/*&#92;nID: xjtuacm1&#92;nPROG: cowtour&#92;nLANG: C++&#92;n*/&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;iostream&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;stack&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cstring&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cstdio&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;queue&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;algorithm&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;set&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;map&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;vector&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cmath&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;using&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;namespace&lt;/span&gt; std&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; N &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;150&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;double&lt;/span&gt; DINF &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1e30&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;struct&lt;/span&gt; &lt;span class=&#92;&amp;quot;token class-name&#92;&amp;quot;&gt;Point&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt; pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; adj&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;double&lt;/span&gt; dis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;double&lt;/span&gt; maxDis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;double&lt;/span&gt; dia&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;floodfill&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; tag&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; tag&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;adj&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;cur&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&amp;amp;amp;&lt;/span&gt; color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;floodfill&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; tag&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;find_component&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; cnt &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;floodfill&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; cnt&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; cnt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;double&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;dist&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!&lt;/span&gt;adj&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; DINF&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;sqrt&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;floyd&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            dis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;dist&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; k &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; k&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; k&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                dis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;min&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;dis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; dis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;k&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; dis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;k&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;main&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; argc&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;argv&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;ifdef&lt;/span&gt; &lt;span class=&#92;&amp;quot;token expression&#92;&amp;quot;&gt;ACM&lt;/span&gt;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;in&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;r&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdin&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;else&lt;/span&gt;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;cowtour.in&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;r&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdin&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;cowtour.out&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;w&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdout&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;endif&lt;/span&gt; &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// ACM&lt;/span&gt;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;scanf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d&#92;&#92;n&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;scanf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d %d&#92;&#92;n&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt; line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;gets&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            adj&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; &lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39;0&#39;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;?&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;:&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n            dis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;dist&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;memset&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;sizeof&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; ncom &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;find_component&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;floyd&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; ncom&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        dia&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        maxDis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&amp;amp;amp;&lt;/span&gt; color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                maxDis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;max&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;maxDis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; dis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n        dia&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;max&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;dia&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; maxDis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;double&lt;/span&gt; diameter &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; DINF&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;continue&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;double&lt;/span&gt; d1 &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;double&lt;/span&gt; d2 &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; k &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; k&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; k&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; k &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&amp;amp;amp;&lt;/span&gt; color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;k&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                d1 &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;max&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;d1&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; dis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;k&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; k &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&amp;amp;amp;&lt;/span&gt; color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;k&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                d2 &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;max&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;d2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; dis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;k&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;double&lt;/span&gt; dist &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;sqrt&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                           &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; pes&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n        diameter &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;min&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;diameter&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt;&#92;n                       &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;max&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;dist &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; d1 &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; d2&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt;&#92;n                           &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;max&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;dia&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; dia&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;printf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%.6lf&#92;&#92;n&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; diameter&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&amp;quot;,&amp;quot;plugins&amp;quot;:{&amp;quot;lineNumbers&amp;quot;:true}}&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/*
ID: xjtuacm1
PROG: cowtour
LANG: C++
*/&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;stack&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cstring&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cstdio&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;queue&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;algorithm&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;set&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;map&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;vector&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cmath&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;namespace&lt;/span&gt; std&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; N &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;150&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;double&lt;/span&gt; DINF &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1e30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Point&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; adj&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;double&lt;/span&gt; dis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;double&lt;/span&gt; maxDis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;double&lt;/span&gt; dia&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;floodfill&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; cur&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; tag&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; tag&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;adj&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;floodfill&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; tag&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;find_component&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; cnt &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;floodfill&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cnt&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; cnt&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;double&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;dist&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;adj&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; DINF&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sqrt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;floyd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            dis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;dist&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; k &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; k&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; k&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                dis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;dis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; dis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; argc&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;argv&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifdef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;ACM&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;in&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;else&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;cowtour.in&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;cowtour.out&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;w&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdout&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// ACM&lt;/span&gt;&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&#92;n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d %d&#92;n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; line&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;gets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            adj&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&#39;0&#39;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

            dis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;dist&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;memset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; ncom &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;find_component&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;floyd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; ncom&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        dia&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        maxDis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                maxDis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;maxDis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

        dia&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;dia&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; maxDis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;double&lt;/span&gt; diameter &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; DINF&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;double&lt;/span&gt; d1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;double&lt;/span&gt; d2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; k &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; k&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; k&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; k &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                d1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;d1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;j &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; k &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                d2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;d2&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;double&lt;/span&gt; dist &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sqrt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                           &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; pes&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        diameter &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;diameter&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                       &lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;dist &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; d1 &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; d2&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                           &lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;dia&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dia&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%.6lf&#92;n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; diameter&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</summary>
    
    
    
    
    <category term="ACM" scheme="https://unlimited-code.works/tags/acm/"/>
    
    <category term="USACO" scheme="https://unlimited-code.works/tags/usaco/"/>
    
    <category term="DFS" scheme="https://unlimited-code.works/tags/dfs/"/>
    
    <category term="Floyd" scheme="https://unlimited-code.works/tags/floyd/"/>
    
  </entry>
  
  <entry>
    <title>USACO 2.4.4 Bessie Come Home</title>
    <link href="https://unlimited-code.works/blog/2013/02/15/usaco-2-4-4/"/>
    <id>https://unlimited-code.works/blog/2013/02/15/usaco-2-4-4/</id>
    <published>2013-02-16T04:40:00.000Z</published>
    <updated>2025-08-09T21:29:05.000Z</updated>
    
    <content type="html"><![CDATA[<p>带权边的Dijkstra</p><pre class="line-numbers language-cpp" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="41fccf3e" class="language-cpp" data-prism-hydrate="{&quot;element&quot;:&quot;41fccf3e&quot;,&quot;language&quot;:&quot;cpp&quot;,&quot;code&quot;:&quot;/*\nID: xjtuacm1\nPROG: comehome\nLANG: C++\n*/\n#include\u003ciostream\u003e\n#include<stack>\n#include<cstring>\n#include<cstdio>\n#include<queue>\n#include<algorithm>\n#include<set>\n#include<map>\nusing namespace std;\nconst int INF = 0x3f3f3f3f;\nconst int M = 10000;\nconst int N = 52;\n\n// Graph structure\nint n;\nint to[M], nxt[M], head[N];\nint w[M];\nbool vis[N];\nint e;\nint dist[N]; // Distance array\nstruct cmp\n{\n    bool operator() (int a, int b)\n    {\n        return dist[a] > dist[b];\n    }\n};\n\nvoid init()\n{\n    memset(vis, false, sizeof(vis));\n    memset(head, -1, sizeof(head));\n    e = 0;\n}\nvoid addEdge(int u, int v, int c)\n{\n    to[e] = v;\n    nxt[e] = head[u];\n    w[e] = c;\n    head[u] = e++;\n}\n\nvoid addBiEdge(int u, int v, int c)\n{\n    addEdge(u, v, c);\n    addEdge(v, u, c);\n}\n\nvoid dijkstra(int src)\n{\n    // Reset distance array\n    memset(vis, false, sizeof(vis));\n    for(int i = 0; i!= n; i++)\n        dist[i] = INF;\n\n    priority_queue<int, vector<int>, cmp> que;\n    vis[src] = true;\n    dist[src] = 0;\n    que.push(src);\n    int pnt = src;\n    for(int i = 1; i!=n; i++)\n    {\n        for(int j = head[pnt]; j!= -1; j = nxt[j])\n        {\n            int v = to[j];\n            if(!vis[v] \u0026&amp; dist[pnt] + w[j] < dist[v])\n            {\n                dist[v] = dist[pnt] + w[j];\n                que.push(v);\n            }\n        }\n        while(!que.empty() &amp;&amp; vis[que.top()])\n            que.pop();\n        if(que.empty())\n            break;\n\n        pnt = que.top(); que.pop();\n        vis[pnt] = true;\n    }\n}\n\nset<char> cows;\nint r[N];\nbool indirectCmp(int a, int b)\n{\n    return dist[a] < dist[b];\n}\n\nint toIdx(char ch)\n{\n    if(ch != tolower(ch))\n        return ch - \u0027A';\n    else\n        return ch - 'a' + 26;\n}\nchar toChar(int idx)\n{\n    if(idx < 26)\n        return idx + 'A';\n    else\n        return idx - 26 + 'a';\n}\n\nint main(int argc, char *argv[])\n{\n    freopen(\&quot;comehome.in\&quot;, \&quot;r\&quot;, stdin);\n#ifndef USACO\n    freopen(\&quot;comehome.out\&quot;, \&quot;w\&quot;, stdout);\n#endif // USACO\n\n    int p;\n    scanf(\&quot;%d\\n\&quot;, &amp;p);\n\n    n = N;\n    init();\n\n    while(p--)\n    {\n        char f, t;\n        int c;\n        scanf(\&quot;%c %c %d\\n\&quot;, &amp;f, &amp;t, &amp;c);\n        if(f == t)\n            continue;\n\n        bool flag = false;\n        for(int edge = head[toIdx(f)]; edge != -1; edge = nxt[edge])\n            if(to[edge] == (toIdx(t)))\n        {\n            w[edge] = min(w[edge], c);\n            flag = true;\n            break;\n        }\n        for(int edge = head[toIdx(t)]; edge != -1; edge = nxt[edge])\n            if(to[edge] == (toIdx(f)))\n        {\n            w[edge] = min(w[edge], c);\n            flag = true;\n            break;\n        }\n        if(flag)\n            continue;\n\n        addBiEdge(toIdx(f), toIdx(t), c);\n    }\n\n    dijkstra(toIdx('Z'));\n\n    for(int i = 0; i!= n; i++)\n        r[i] = i;\n\n    sort(r, r+n, indirectCmp);\n    for(int i = 1; i!= n; i++)\n    {\n        if(r[i] < 26)\n        {\n            printf(\&quot;%c %d\\n\&quot;, toChar(r[i]), dist[r[i]]);\n            break;\n        }\n    }\n\n    return 0;\n}&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;<span class=\&quot;token comment\&quot;>/*\nID: xjtuacm1\nPROG: comehome\nLANG: C++\n*/</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;iostream></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;stack></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstring></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstdio></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;queue></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;algorithm></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;set></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;map></span></span>\n<span class=\&quot;token keyword\&quot;>using</span> <span class=\&quot;token keyword\&quot;>namespace</span> std<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> INF <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0x3f3f3f3f</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> M <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>10000</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> N <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>52</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token comment\&quot;>// Graph structure</span>\n<span class=\&quot;token keyword\&quot;>int</span> n<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> to<span class=\&quot;token punctuation\&quot;>[</span>M<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> nxt<span class=\&quot;token punctuation\&quot;>[</span>M<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> head<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> w<span class=\&quot;token punctuation\&quot;>[</span>M<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>bool</span> vis<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> e<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> dist<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span> <span class=\&quot;token comment\&quot;>// Distance array</span>\n<span class=\&quot;token keyword\&quot;>struct</span> <span class=\&quot;token class-name\&quot;>cmp</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token keyword\&quot;>operator</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> a<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> b<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>return</span> dist<span class=\&quot;token punctuation\&quot;>[</span>a<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>></span> dist<span class=\&quot;token punctuation\&quot;>[</span>b<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>init</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token function\&quot;>memset</span><span class=\&quot;token punctuation\&quot;>(</span>vis<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token boolean\&quot;>false</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>sizeof</span><span class=\&quot;token punctuation\&quot;>(</span>vis<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>memset</span><span class=\&quot;token punctuation\&quot;>(</span>head<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>sizeof</span><span class=\&quot;token punctuation\&quot;>(</span>head<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    e <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>addEdge</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> u<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> v<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> c<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    to<span class=\&quot;token punctuation\&quot;>[</span>e<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> v<span class=\&quot;token punctuation\&quot;>;</span>\n    nxt<span class=\&quot;token punctuation\&quot;>[</span>e<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> head<span class=\&quot;token punctuation\&quot;>[</span>u<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n    w<span class=\&quot;token punctuation\&quot;>[</span>e<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> c<span class=\&quot;token punctuation\&quot;>;</span>\n    head<span class=\&quot;token punctuation\&quot;>[</span>u<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> e<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>addBiEdge</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> u<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> v<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> c<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token function\&quot;>addEdge</span><span class=\&quot;token punctuation\&quot;>(</span>u<span class=\&quot;token punctuation\&quot;>,</span> v<span class=\&quot;token punctuation\&quot;>,</span> c<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>addEdge</span><span class=\&quot;token punctuation\&quot;>(</span>v<span class=\&quot;token punctuation\&quot;>,</span> u<span class=\&quot;token punctuation\&quot;>,</span> c<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>dijkstra</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> src<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token comment\&quot;>// Reset distance array</span>\n    <span class=\&quot;token function\&quot;>memset</span><span class=\&quot;token punctuation\&quot;>(</span>vis<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token boolean\&quot;>false</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>sizeof</span><span class=\&quot;token punctuation\&quot;>(</span>vis<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        dist<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> INF<span class=\&quot;token punctuation\&quot;>;</span>\n\n    priority_queue<span class=\&quot;token operator\&quot;>&amp;lt;</span><span class=\&quot;token keyword\&quot;>int</span><span class=\&quot;token punctuation\&quot;>,</span> vector<span class=\&quot;token operator\&quot;>&amp;lt;</span><span class=\&quot;token keyword\&quot;>int</span><span class=\&quot;token operator\&quot;>></span><span class=\&quot;token punctuation\&quot;>,</span> cmp<span class=\&quot;token operator\&quot;>></span> que<span class=\&quot;token punctuation\&quot;>;</span>\n    vis<span class=\&quot;token punctuation\&quot;>[</span>src<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>;</span>\n    dist<span class=\&quot;token punctuation\&quot;>[</span>src<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n    que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>push</span><span class=\&quot;token punctuation\&quot;>(</span>src<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>int</span> pnt <span class=\&quot;token operator\&quot;>=</span> src<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span>n<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> j <span class=\&quot;token operator\&quot;>=</span> head<span class=\&quot;token punctuation\&quot;>[</span>pnt<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> j <span class=\&quot;token operator\&quot;>=</span> nxt<span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token keyword\&quot;>int</span> v <span class=\&quot;token operator\&quot;>=</span> to<span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>!</span>vis<span class=\&quot;token punctuation\&quot;>[</span>v<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>&amp;amp;&amp;amp;</span> dist<span class=\&quot;token punctuation\&quot;>[</span>pnt<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>+</span> w<span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>&amp;lt;</span> dist<span class=\&quot;token punctuation\&quot;>[</span>v<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                dist<span class=\&quot;token punctuation\&quot;>[</span>v<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> dist<span class=\&quot;token punctuation\&quot;>[</span>pnt<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>+</span> w<span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n                que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>push</span><span class=\&quot;token punctuation\&quot;>(</span>v<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>!</span>que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>empty</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>&amp;amp;&amp;amp;</span> vis<span class=\&quot;token punctuation\&quot;>[</span>que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>top</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n            que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>pop</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>empty</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token keyword\&quot;>break</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n        pnt <span class=\&quot;token operator\&quot;>=</span> que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>top</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span> que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>pop</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        vis<span class=\&quot;token punctuation\&quot;>[</span>pnt<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\nset<span class=\&quot;token operator\&quot;>&amp;lt;</span><span class=\&quot;token keyword\&quot;>char</span><span class=\&quot;token operator\&quot;>></span> cows<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> r<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token function\&quot;>indirectCmp</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> a<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> b<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>return</span> dist<span class=\&quot;token punctuation\&quot;>[</span>a<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>&amp;lt;</span> dist<span class=\&quot;token punctuation\&quot;>[</span>b<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>toIdx</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>char</span> ch<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>ch <span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token function\&quot;>tolower</span><span class=\&quot;token punctuation\&quot;>(</span>ch<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token keyword\&quot;>return</span> ch <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token char\&quot;>'A'</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>else</span>\n        <span class=\&quot;token keyword\&quot;>return</span> ch <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token char\&quot;>'a'</span> <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>26</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token keyword\&quot;>char</span> <span class=\&quot;token function\&quot;>toChar</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> idx<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>idx <span class=\&quot;token operator\&quot;>&amp;lt;</span> <span class=\&quot;token number\&quot;>26</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token keyword\&quot;>return</span> idx <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token char\&quot;>'A'</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>else</span>\n        <span class=\&quot;token keyword\&quot;>return</span> idx <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token number\&quot;>26</span> <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token char\&quot;>'a'</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>main</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> argc<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>char</span> <span class=\&quot;token operator\&quot;>*</span>argv<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;comehome.in\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;r\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdin</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>ifndef</span> <span class=\&quot;token expression\&quot;>USACO</span></span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;comehome.out\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;w\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdout</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>endif</span> <span class=\&quot;token comment\&quot;>// USACO</span></span>\n\n    <span class=\&quot;token keyword\&quot;>int</span> p<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>p<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    n <span class=\&quot;token operator\&quot;>=</span> N<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>init</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span>p<span class=\&quot;token operator\&quot;>--</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>char</span> f<span class=\&quot;token punctuation\&quot;>,</span> t<span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>int</span> c<span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%c %c %d\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>f<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>t<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>c<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>f <span class=\&quot;token operator\&quot;>==</span> t<span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token keyword\&quot;>continue</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n        <span class=\&quot;token keyword\&quot;>bool</span> flag <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token boolean\&quot;>false</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> edge <span class=\&quot;token operator\&quot;>=</span> head<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token function\&quot;>toIdx</span><span class=\&quot;token punctuation\&quot;>(</span>f<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span> edge <span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> edge <span class=\&quot;token operator\&quot;>=</span> nxt<span class=\&quot;token punctuation\&quot;>[</span>edge<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>to<span class=\&quot;token punctuation\&quot;>[</span>edge<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>toIdx</span><span class=\&quot;token punctuation\&quot;>(</span>t<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            w<span class=\&quot;token punctuation\&quot;>[</span>edge<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>min</span><span class=\&quot;token punctuation\&quot;>(</span>w<span class=\&quot;token punctuation\&quot;>[</span>edge<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> c<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            flag <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token keyword\&quot;>break</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> edge <span class=\&quot;token operator\&quot;>=</span> head<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token function\&quot;>toIdx</span><span class=\&quot;token punctuation\&quot;>(</span>t<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span> edge <span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> edge <span class=\&quot;token operator\&quot;>=</span> nxt<span class=\&quot;token punctuation\&quot;>[</span>edge<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>to<span class=\&quot;token punctuation\&quot;>[</span>edge<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>toIdx</span><span class=\&quot;token punctuation\&quot;>(</span>f<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            w<span class=\&quot;token punctuation\&quot;>[</span>edge<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>min</span><span class=\&quot;token punctuation\&quot;>(</span>w<span class=\&quot;token punctuation\&quot;>[</span>edge<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> c<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            flag <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token keyword\&quot;>break</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>flag<span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token keyword\&quot;>continue</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n        <span class=\&quot;token function\&quot;>addBiEdge</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>toIdx</span><span class=\&quot;token punctuation\&quot;>(</span>f<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token function\&quot;>toIdx</span><span class=\&quot;token punctuation\&quot;>(</span>t<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>,</span> c<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token function\&quot;>dijkstra</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>toIdx</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token char\&quot;>'Z'</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        r<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> i<span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token function\&quot;>sort</span><span class=\&quot;token punctuation\&quot;>(</span>r<span class=\&quot;token punctuation\&quot;>,</span> r<span class=\&quot;token operator\&quot;>+</span>n<span class=\&quot;token punctuation\&quot;>,</span> indirectCmp<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> n<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>r<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>&amp;lt;</span> <span class=\&quot;token number\&quot;>26</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token function\&quot;>printf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%c %d\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token function\&quot;>toChar</span><span class=\&quot;token punctuation\&quot;>(</span>r<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>,</span> dist<span class=\&quot;token punctuation\&quot;>[</span>r<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token keyword\&quot;>break</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>&quot;,&quot;plugins&quot;:{&quot;lineNumbers&quot;:true}}"><span class="token comment">/*ID: xjtuacm1PROG: comehomeLANG: C++*/</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;iostream&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;stack&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstring&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstdio&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;queue&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;algorithm&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;set&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;map&gt;</span></span><span class="token keyword">using</span> <span class="token keyword">namespace</span> std<span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> INF <span class="token operator">=</span> <span class="token number">0x3f3f3f3f</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> M <span class="token operator">=</span> <span class="token number">10000</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> N <span class="token operator">=</span> <span class="token number">52</span><span class="token punctuation">;</span><span class="token comment">// Graph structure</span><span class="token keyword">int</span> n<span class="token punctuation">;</span><span class="token keyword">int</span> to<span class="token punctuation">[</span>M<span class="token punctuation">]</span><span class="token punctuation">,</span> nxt<span class="token punctuation">[</span>M<span class="token punctuation">]</span><span class="token punctuation">,</span> head<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span> w<span class="token punctuation">[</span>M<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">bool</span> vis<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span> e<span class="token punctuation">;</span><span class="token keyword">int</span> dist<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token comment">// Distance array</span><span class="token keyword">struct</span> <span class="token class-name">cmp</span><span class="token punctuation">{</span>    <span class="token keyword">bool</span> <span class="token keyword">operator</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">(</span><span class="token keyword">int</span> a<span class="token punctuation">,</span> <span class="token keyword">int</span> b<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">return</span> dist<span class="token punctuation">[</span>a<span class="token punctuation">]</span> <span class="token operator">&gt;</span> dist<span class="token punctuation">[</span>b<span class="token punctuation">]</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">;</span><span class="token keyword">void</span> <span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token function">memset</span><span class="token punctuation">(</span>vis<span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token keyword">sizeof</span><span class="token punctuation">(</span>vis<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token function">memset</span><span class="token punctuation">(</span>head<span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token keyword">sizeof</span><span class="token punctuation">(</span>head<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    e <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">void</span> <span class="token function">addEdge</span><span class="token punctuation">(</span><span class="token keyword">int</span> u<span class="token punctuation">,</span> <span class="token keyword">int</span> v<span class="token punctuation">,</span> <span class="token keyword">int</span> c<span class="token punctuation">)</span><span class="token punctuation">{</span>    to<span class="token punctuation">[</span>e<span class="token punctuation">]</span> <span class="token operator">=</span> v<span class="token punctuation">;</span>    nxt<span class="token punctuation">[</span>e<span class="token punctuation">]</span> <span class="token operator">=</span> head<span class="token punctuation">[</span>u<span class="token punctuation">]</span><span class="token punctuation">;</span>    w<span class="token punctuation">[</span>e<span class="token punctuation">]</span> <span class="token operator">=</span> c<span class="token punctuation">;</span>    head<span class="token punctuation">[</span>u<span class="token punctuation">]</span> <span class="token operator">=</span> e<span class="token operator">++</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">void</span> <span class="token function">addBiEdge</span><span class="token punctuation">(</span><span class="token keyword">int</span> u<span class="token punctuation">,</span> <span class="token keyword">int</span> v<span class="token punctuation">,</span> <span class="token keyword">int</span> c<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token function">addEdge</span><span class="token punctuation">(</span>u<span class="token punctuation">,</span> v<span class="token punctuation">,</span> c<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token function">addEdge</span><span class="token punctuation">(</span>v<span class="token punctuation">,</span> u<span class="token punctuation">,</span> c<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">void</span> <span class="token function">dijkstra</span><span class="token punctuation">(</span><span class="token keyword">int</span> src<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token comment">// Reset distance array</span>    <span class="token function">memset</span><span class="token punctuation">(</span>vis<span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token keyword">sizeof</span><span class="token punctuation">(</span>vis<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        dist<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> INF<span class="token punctuation">;</span>    priority_queue<span class="token operator">&lt;</span><span class="token keyword">int</span><span class="token punctuation">,</span> vector<span class="token operator">&lt;</span><span class="token keyword">int</span><span class="token operator">&gt;</span><span class="token punctuation">,</span> cmp<span class="token operator">&gt;</span> que<span class="token punctuation">;</span>    vis<span class="token punctuation">[</span>src<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>    dist<span class="token punctuation">[</span>src<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>    que<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>src<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">int</span> pnt <span class="token operator">=</span> src<span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> i<span class="token operator">!=</span>n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> head<span class="token punctuation">[</span>pnt<span class="token punctuation">]</span><span class="token punctuation">;</span> j<span class="token operator">!=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span> j <span class="token operator">=</span> nxt<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token keyword">int</span> v <span class="token operator">=</span> to<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">;</span>            <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span>vis<span class="token punctuation">[</span>v<span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> dist<span class="token punctuation">[</span>pnt<span class="token punctuation">]</span> <span class="token operator">+</span> w<span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">&lt;</span> dist<span class="token punctuation">[</span>v<span class="token punctuation">]</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                dist<span class="token punctuation">[</span>v<span class="token punctuation">]</span> <span class="token operator">=</span> dist<span class="token punctuation">[</span>pnt<span class="token punctuation">]</span> <span class="token operator">+</span> w<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">;</span>                que<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>v<span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token punctuation">}</span>        <span class="token punctuation">}</span>        <span class="token keyword">while</span><span class="token punctuation">(</span><span class="token operator">!</span>que<span class="token punctuation">.</span><span class="token function">empty</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">&amp;&amp;</span> vis<span class="token punctuation">[</span>que<span class="token punctuation">.</span><span class="token function">top</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">)</span>            que<span class="token punctuation">.</span><span class="token function">pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>que<span class="token punctuation">.</span><span class="token function">empty</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>            <span class="token keyword">break</span><span class="token punctuation">;</span>        pnt <span class="token operator">=</span> que<span class="token punctuation">.</span><span class="token function">top</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> que<span class="token punctuation">.</span><span class="token function">pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        vis<span class="token punctuation">[</span>pnt<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span>set<span class="token operator">&lt;</span><span class="token keyword">char</span><span class="token operator">&gt;</span> cows<span class="token punctuation">;</span><span class="token keyword">int</span> r<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">bool</span> <span class="token function">indirectCmp</span><span class="token punctuation">(</span><span class="token keyword">int</span> a<span class="token punctuation">,</span> <span class="token keyword">int</span> b<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">return</span> dist<span class="token punctuation">[</span>a<span class="token punctuation">]</span> <span class="token operator">&lt;</span> dist<span class="token punctuation">[</span>b<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">int</span> <span class="token function">toIdx</span><span class="token punctuation">(</span><span class="token keyword">char</span> ch<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">if</span><span class="token punctuation">(</span>ch <span class="token operator">!=</span> <span class="token function">tolower</span><span class="token punctuation">(</span>ch<span class="token punctuation">)</span><span class="token punctuation">)</span>        <span class="token keyword">return</span> ch <span class="token operator">-</span> <span class="token char">'A'</span><span class="token punctuation">;</span>    <span class="token keyword">else</span>        <span class="token keyword">return</span> ch <span class="token operator">-</span> <span class="token char">'a'</span> <span class="token operator">+</span> <span class="token number">26</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">char</span> <span class="token function">toChar</span><span class="token punctuation">(</span><span class="token keyword">int</span> idx<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">if</span><span class="token punctuation">(</span>idx <span class="token operator">&lt;</span> <span class="token number">26</span><span class="token punctuation">)</span>        <span class="token keyword">return</span> idx <span class="token operator">+</span> <span class="token char">'A'</span><span class="token punctuation">;</span>    <span class="token keyword">else</span>        <span class="token keyword">return</span> idx <span class="token operator">-</span> <span class="token number">26</span> <span class="token operator">+</span> <span class="token char">'a'</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token keyword">int</span> argc<span class="token punctuation">,</span> <span class="token keyword">char</span> <span class="token operator">*</span>argv<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"comehome.in"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">,</span> <span class="token constant">stdin</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">ifndef</span> <span class="token expression">USACO</span></span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"comehome.out"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">,</span> <span class="token constant">stdout</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">endif</span> <span class="token comment">// USACO</span></span>    <span class="token keyword">int</span> p<span class="token punctuation">;</span>    <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d\n"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>p<span class="token punctuation">)</span><span class="token punctuation">;</span>    n <span class="token operator">=</span> N<span class="token punctuation">;</span>    <span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">while</span><span class="token punctuation">(</span>p<span class="token operator">--</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">char</span> f<span class="token punctuation">,</span> t<span class="token punctuation">;</span>        <span class="token keyword">int</span> c<span class="token punctuation">;</span>        <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%c %c %d\n"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>f<span class="token punctuation">,</span> <span class="token operator">&amp;</span>t<span class="token punctuation">,</span> <span class="token operator">&amp;</span>c<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>f <span class="token operator">==</span> t<span class="token punctuation">)</span>            <span class="token keyword">continue</span><span class="token punctuation">;</span>        <span class="token keyword">bool</span> flag <span class="token operator">=</span> <span class="token boolean">false</span><span class="token punctuation">;</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> edge <span class="token operator">=</span> head<span class="token punctuation">[</span><span class="token function">toIdx</span><span class="token punctuation">(</span>f<span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">;</span> edge <span class="token operator">!=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span> edge <span class="token operator">=</span> nxt<span class="token punctuation">[</span>edge<span class="token punctuation">]</span><span class="token punctuation">)</span>            <span class="token keyword">if</span><span class="token punctuation">(</span>to<span class="token punctuation">[</span>edge<span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token punctuation">(</span><span class="token function">toIdx</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            w<span class="token punctuation">[</span>edge<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">min</span><span class="token punctuation">(</span>w<span class="token punctuation">[</span>edge<span class="token punctuation">]</span><span class="token punctuation">,</span> c<span class="token punctuation">)</span><span class="token punctuation">;</span>            flag <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>            <span class="token keyword">break</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> edge <span class="token operator">=</span> head<span class="token punctuation">[</span><span class="token function">toIdx</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">;</span> edge <span class="token operator">!=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span> edge <span class="token operator">=</span> nxt<span class="token punctuation">[</span>edge<span class="token punctuation">]</span><span class="token punctuation">)</span>            <span class="token keyword">if</span><span class="token punctuation">(</span>to<span class="token punctuation">[</span>edge<span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token punctuation">(</span><span class="token function">toIdx</span><span class="token punctuation">(</span>f<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            w<span class="token punctuation">[</span>edge<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">min</span><span class="token punctuation">(</span>w<span class="token punctuation">[</span>edge<span class="token punctuation">]</span><span class="token punctuation">,</span> c<span class="token punctuation">)</span><span class="token punctuation">;</span>            flag <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>            <span class="token keyword">break</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>flag<span class="token punctuation">)</span>            <span class="token keyword">continue</span><span class="token punctuation">;</span>        <span class="token function">addBiEdge</span><span class="token punctuation">(</span><span class="token function">toIdx</span><span class="token punctuation">(</span>f<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">toIdx</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span><span class="token punctuation">,</span> c<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token function">dijkstra</span><span class="token punctuation">(</span><span class="token function">toIdx</span><span class="token punctuation">(</span><span class="token char">'Z'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        r<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> i<span class="token punctuation">;</span>    <span class="token function">sort</span><span class="token punctuation">(</span>r<span class="token punctuation">,</span> r<span class="token operator">+</span>n<span class="token punctuation">,</span> indirectCmp<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>r<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">&lt;</span> <span class="token number">26</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%c %d\n"</span><span class="token punctuation">,</span> <span class="token function">toChar</span><span class="token punctuation">(</span>r<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">,</span> dist<span class="token punctuation">[</span>r<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token keyword">break</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>]]></content>
    
    
    <summary type="html">&lt;p&gt;带权边的Dijkstra&lt;/p&gt;
&lt;pre class=&quot;line-numbers language-cpp&quot; style=&quot;max-height: 30em&quot; data-prismjs-copy-timeout=&quot;500&quot; tabindex=&quot;0&quot;&gt;&lt;code id=&quot;41fccf3e&quot; class=&quot;language-cpp&quot; data-prism-hydrate=&quot;{&amp;quot;element&amp;quot;:&amp;quot;41fccf3e&amp;quot;,&amp;quot;language&amp;quot;:&amp;quot;cpp&amp;quot;,&amp;quot;code&amp;quot;:&amp;quot;/*&#92;nID: xjtuacm1&#92;nPROG: comehome&#92;nLANG: C++&#92;n*/&#92;n#include&#92;u003ciostream&#92;u003e&#92;n#include&lt;stack&gt;&#92;n#include&lt;cstring&gt;&#92;n#include&lt;cstdio&gt;&#92;n#include&lt;queue&gt;&#92;n#include&lt;algorithm&gt;&#92;n#include&lt;set&gt;&#92;n#include&lt;map&gt;&#92;nusing namespace std;&#92;nconst int INF = 0x3f3f3f3f;&#92;nconst int M = 10000;&#92;nconst int N = 52;&#92;n&#92;n// Graph structure&#92;nint n;&#92;nint to[M], nxt[M], head[N];&#92;nint w[M];&#92;nbool vis[N];&#92;nint e;&#92;nint dist[N]; // Distance array&#92;nstruct cmp&#92;n{&#92;n    bool operator() (int a, int b)&#92;n    {&#92;n        return dist[a] &gt; dist[b];&#92;n    }&#92;n};&#92;n&#92;nvoid init()&#92;n{&#92;n    memset(vis, false, sizeof(vis));&#92;n    memset(head, -1, sizeof(head));&#92;n    e = 0;&#92;n}&#92;nvoid addEdge(int u, int v, int c)&#92;n{&#92;n    to[e] = v;&#92;n    nxt[e] = head[u];&#92;n    w[e] = c;&#92;n    head[u] = e++;&#92;n}&#92;n&#92;nvoid addBiEdge(int u, int v, int c)&#92;n{&#92;n    addEdge(u, v, c);&#92;n    addEdge(v, u, c);&#92;n}&#92;n&#92;nvoid dijkstra(int src)&#92;n{&#92;n    // Reset distance array&#92;n    memset(vis, false, sizeof(vis));&#92;n    for(int i = 0; i!= n; i++)&#92;n        dist[i] = INF;&#92;n&#92;n    priority_queue&lt;int, vector&lt;int&gt;, cmp&gt; que;&#92;n    vis[src] = true;&#92;n    dist[src] = 0;&#92;n    que.push(src);&#92;n    int pnt = src;&#92;n    for(int i = 1; i!=n; i++)&#92;n    {&#92;n        for(int j = head[pnt]; j!= -1; j = nxt[j])&#92;n        {&#92;n            int v = to[j];&#92;n            if(!vis[v] &#92;u0026&amp;amp; dist[pnt] + w[j] &lt; dist[v])&#92;n            {&#92;n                dist[v] = dist[pnt] + w[j];&#92;n                que.push(v);&#92;n            }&#92;n        }&#92;n        while(!que.empty() &amp;amp;&amp;amp; vis[que.top()])&#92;n            que.pop();&#92;n        if(que.empty())&#92;n            break;&#92;n&#92;n        pnt = que.top(); que.pop();&#92;n        vis[pnt] = true;&#92;n    }&#92;n}&#92;n&#92;nset&lt;char&gt; cows;&#92;nint r[N];&#92;nbool indirectCmp(int a, int b)&#92;n{&#92;n    return dist[a] &lt; dist[b];&#92;n}&#92;n&#92;nint toIdx(char ch)&#92;n{&#92;n    if(ch != tolower(ch))&#92;n        return ch - &#92;u0027A&#39;;&#92;n    else&#92;n        return ch - &#39;a&#39; + 26;&#92;n}&#92;nchar toChar(int idx)&#92;n{&#92;n    if(idx &lt; 26)&#92;n        return idx + &#39;A&#39;;&#92;n    else&#92;n        return idx - 26 + &#39;a&#39;;&#92;n}&#92;n&#92;nint main(int argc, char *argv[])&#92;n{&#92;n    freopen(&#92;&amp;quot;comehome.in&#92;&amp;quot;, &#92;&amp;quot;r&#92;&amp;quot;, stdin);&#92;n#ifndef USACO&#92;n    freopen(&#92;&amp;quot;comehome.out&#92;&amp;quot;, &#92;&amp;quot;w&#92;&amp;quot;, stdout);&#92;n#endif // USACO&#92;n&#92;n    int p;&#92;n    scanf(&#92;&amp;quot;%d&#92;&#92;n&#92;&amp;quot;, &amp;amp;p);&#92;n&#92;n    n = N;&#92;n    init();&#92;n&#92;n    while(p--)&#92;n    {&#92;n        char f, t;&#92;n        int c;&#92;n        scanf(&#92;&amp;quot;%c %c %d&#92;&#92;n&#92;&amp;quot;, &amp;amp;f, &amp;amp;t, &amp;amp;c);&#92;n        if(f == t)&#92;n            continue;&#92;n&#92;n        bool flag = false;&#92;n        for(int edge = head[toIdx(f)]; edge != -1; edge = nxt[edge])&#92;n            if(to[edge] == (toIdx(t)))&#92;n        {&#92;n            w[edge] = min(w[edge], c);&#92;n            flag = true;&#92;n            break;&#92;n        }&#92;n        for(int edge = head[toIdx(t)]; edge != -1; edge = nxt[edge])&#92;n            if(to[edge] == (toIdx(f)))&#92;n        {&#92;n            w[edge] = min(w[edge], c);&#92;n            flag = true;&#92;n            break;&#92;n        }&#92;n        if(flag)&#92;n            continue;&#92;n&#92;n        addBiEdge(toIdx(f), toIdx(t), c);&#92;n    }&#92;n&#92;n    dijkstra(toIdx(&#39;Z&#39;));&#92;n&#92;n    for(int i = 0; i!= n; i++)&#92;n        r[i] = i;&#92;n&#92;n    sort(r, r+n, indirectCmp);&#92;n    for(int i = 1; i!= n; i++)&#92;n    {&#92;n        if(r[i] &lt; 26)&#92;n        {&#92;n            printf(&#92;&amp;quot;%c %d&#92;&#92;n&#92;&amp;quot;, toChar(r[i]), dist[r[i]]);&#92;n            break;&#92;n        }&#92;n    }&#92;n&#92;n    return 0;&#92;n}&amp;quot;,&amp;quot;settings&amp;quot;:{},&amp;quot;vars&amp;quot;:{&amp;quot;command-line&amp;quot;:{&amp;quot;complete&amp;quot;:true}},&amp;quot;highlightedCode&amp;quot;:&amp;quot;&lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;/*&#92;nID: xjtuacm1&#92;nPROG: comehome&#92;nLANG: C++&#92;n*/&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;iostream&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;stack&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cstring&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cstdio&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;queue&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;algorithm&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;set&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;map&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;using&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;namespace&lt;/span&gt; std&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; INF &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0x3f3f3f3f&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; M &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;10000&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; N &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;52&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// Graph structure&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; to&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;M&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; nxt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;M&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; head&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;M&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;bool&lt;/span&gt; vis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; dist&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// Distance array&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;struct&lt;/span&gt; &lt;span class=&#92;&amp;quot;token class-name&#92;&amp;quot;&gt;cmp&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;bool&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;operator&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; dist&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt; dist&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;init&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;memset&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;vis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;false&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;sizeof&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;vis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;memset&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;head&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;sizeof&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;head&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    e &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;addEdge&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; c&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    to&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    nxt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; head&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;e&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; c&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    head&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; e&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;addBiEdge&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; c&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;addEdge&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; c&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;addEdge&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; c&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;dijkstra&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; src&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// Reset distance array&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;memset&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;vis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;false&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;sizeof&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;vis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        dist&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; INF&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    priority_queue&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; vector&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; cmp&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt; que&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    vis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;src&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;true&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    dist&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;src&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    que&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;push&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;src&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; pnt &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; src&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; head&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;pnt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; nxt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; v &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; to&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!&lt;/span&gt;vis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&amp;amp;amp;&lt;/span&gt; dist&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;pnt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt; dist&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                dist&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; dist&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;pnt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                que&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;push&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;while&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!&lt;/span&gt;que&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;empty&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&amp;amp;amp;&lt;/span&gt; vis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;que&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;top&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            que&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;pop&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;que&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;empty&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;break&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n        pnt &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; que&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;top&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; que&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;pop&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        vis&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;pnt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;true&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;nset&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt; cows&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;bool&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;indirectCmp&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; dist&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt; dist&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;toIdx&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt; ch&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;ch &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;tolower&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;ch&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; ch &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39;A&#39;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;else&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; ch &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39;a&#39;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;26&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;toChar&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; idx&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;idx &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;26&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; idx &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; &lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39;A&#39;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;else&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; idx &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;26&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; &lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39;a&#39;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;main&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; argc&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;argv&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;comehome.in&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;r&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdin&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;ifndef&lt;/span&gt; &lt;span class=&#92;&amp;quot;token expression&#92;&amp;quot;&gt;USACO&lt;/span&gt;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;comehome.out&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;w&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdout&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;endif&lt;/span&gt; &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// USACO&lt;/span&gt;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; p&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;scanf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d&#92;&#92;n&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;p&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    n &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; N&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;init&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;while&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;p&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;--&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt; f&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; c&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;scanf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%c %c %d&#92;&#92;n&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;f&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;c&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;f &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;continue&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;bool&lt;/span&gt; flag &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;false&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; edge &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; head&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;toIdx&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;f&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; edge &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; edge &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; nxt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;edge&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;to&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;edge&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;toIdx&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;edge&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;min&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;edge&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; c&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            flag &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;true&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;break&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; edge &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; head&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;toIdx&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; edge &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; edge &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; nxt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;edge&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;to&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;edge&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;toIdx&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;f&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;edge&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;min&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;edge&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; c&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            flag &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;true&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;break&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;flag&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;continue&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;addBiEdge&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;toIdx&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;f&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;toIdx&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;t&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; c&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;dijkstra&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;toIdx&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39;Z&#39;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;sort&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; r&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; indirectCmp&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;26&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;printf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%c %d&#92;&#92;n&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;toChar&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; dist&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;r&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;break&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&amp;quot;,&amp;quot;plugins&amp;quot;:{&amp;quot;lineNumbers&amp;quot;:true}}&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/*
ID: xjtuacm1
PROG: comehome
LANG: C++
*/&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;stack&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cstring&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cstdio&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;queue&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;algorithm&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;set&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;map&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;namespace&lt;/span&gt; std&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; INF &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0x3f3f3f3f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; M &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; N &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;52&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Graph structure&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; to&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;M&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; nxt&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;M&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; head&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;M&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;bool&lt;/span&gt; vis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; e&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; dist&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Distance array&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;cmp&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;operator&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; dist&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; dist&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;memset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;vis&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;vis&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;memset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;head&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;head&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    e &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;addEdge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; u&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    to&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    nxt&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; head&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;u&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    w&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    head&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;u&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; e&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;addBiEdge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; u&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;addEdge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;u&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;addEdge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; u&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;dijkstra&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; src&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// Reset distance array&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;memset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;vis&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;vis&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        dist&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; INF&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    priority_queue&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; vector&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cmp&lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; que&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    vis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;src&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    dist&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;src&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    que&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;src&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; pnt &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; src&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; head&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;pnt&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; nxt&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; v &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; to&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;vis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; dist&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;pnt&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; dist&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                dist&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; dist&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;pnt&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                que&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;que&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;empty&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; vis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;que&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            que&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;pop&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;que&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;empty&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        pnt &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; que&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; que&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;pop&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        vis&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;pnt&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

set&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; cows&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;indirectCmp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; dist&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; dist&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;toIdx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; ch&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ch &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tolower&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ch&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; ch &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&#39;A&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; ch &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&#39;a&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;26&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;toChar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; idx&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;idx &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;26&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; idx &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&#39;A&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; idx &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;26&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&#39;a&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; argc&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;argv&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;comehome.in&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifndef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;USACO&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;comehome.out&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;w&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdout&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// USACO&lt;/span&gt;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; p&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&#92;n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;p&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    n &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; N&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;p&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; f&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%c %c %d&#92;n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;f&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;f &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;bool&lt;/span&gt; flag &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; edge &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; head&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toIdx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;f&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; edge &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; edge &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; nxt&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;to&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toIdx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            w&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;w&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            flag &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; edge &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; head&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toIdx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; edge &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; edge &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; nxt&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;to&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toIdx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;f&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            w&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;w&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;edge&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            flag &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;flag&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token function&quot;&gt;addBiEdge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toIdx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;f&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;toIdx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;dijkstra&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toIdx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token char&quot;&gt;&#39;Z&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        r&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;sort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; indirectCmp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;26&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%c %d&#92;n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;toChar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dist&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</summary>
    
    
    
    
    <category term="ACM" scheme="https://unlimited-code.works/tags/acm/"/>
    
    <category term="USACO" scheme="https://unlimited-code.works/tags/usaco/"/>
    
    <category term="Dijkstra" scheme="https://unlimited-code.works/tags/dijkstra/"/>
    
  </entry>
  
  <entry>
    <title>USACO 2.4.2 Overfencing</title>
    <link href="https://unlimited-code.works/blog/2013/02/15/usaco-2-4-2/"/>
    <id>https://unlimited-code.works/blog/2013/02/15/usaco-2-4-2/</id>
    <published>2013-02-16T04:33:00.000Z</published>
    <updated>2025-08-09T21:29:05.000Z</updated>
    
    <content type="html"><![CDATA[<p>题意是给你一个迷宫，有两个出口，找出最长的从迷宫内任意一点到出口的最短距离。</p><p>一开始想到的是dijkstra，在两个出口分别运行一次，取每个点到两个出口距离中最短的，再去其中最大的即可。</p><p>然后想到其实分别从两个出口作BFS，标注每个点的距离即可。</p><pre class="line-numbers language-cpp" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="bf989f3d" class="language-cpp" data-prism-hydrate="{&quot;element&quot;:&quot;bf989f3d&quot;,&quot;language&quot;:&quot;cpp&quot;,&quot;code&quot;:&quot;/*\nID: xjtuacm1\nPROG: maze1\nLANG: C++\n*/\n#include\u003ciostream\u003e\n#include<stack>\n#include<cstring>\n#include<cstdio>\n#include<queue>\n#include<algorithm>\n#include<set>\n#include<map>\nusing namespace std;\nconst int W = 38;\nconst int H = 100;\nconst int INF = 0x3f3f3f3f;\n\nconst int dir[4] = { 1, 2, 4, 8};\n\nint stage[H][W];\nint color[H][W];\nint h, w;\n\nstruct Point\n{\n    int x, y;\n    Point(int xx = 0, int yy = 0) :x(xx), y(yy) {}\n    bool operator<(const Point\u0026 rhs) const\n    {\n        if(x == rhs.x)\n            return y < rhs.y;\n        return x < rhs.x;\n    }\n\n    bool connect(int d) const\n    {\n        return !(stage[x][y] &amp; dir[d]);\n    }\n\n    Point next(int d) const\n    {\n        switch(dir[d])\n        {\n        case 1:\n            return Point(x, y-1);\n        case 2:\n            return Point(x-1, y);\n        case 4:\n            return Point(x, y+1);\n        case 8:\n            return Point(x+1, y);\n        }\n        return Point();\n    }\n};\n\nvoid init()\n{\n    for(int i = 0; i!= h; i++)\n        for(int j = 0; j!= w; j++)\n        {\n            stage[i][j] = 0xF;\n            color[i][j] = INF;\n        }\n}\n\nvoid addEdge(const Point&amp; u, const Point&amp; v)\n{\n    const Point&amp; a = u<v ? u : v;\n    const Point&amp; b = u<v ? v : u;\n    if(a.x == b.x)\n    {\n        stage[a.x][a.y] ^= 1<<2;\n        stage[b.x][b.y] ^= 1;\n    }\n    if(a.y == b.y)\n    {\n        stage[a.x][a.y] ^= 1<<3;\n        stage[b.x][b.y] ^= 1<<1;\n    }\n}\n\nvoid bfs(const Point&amp; src)\n{\n    color[src.x][src.y] = 1;\n    queue<pair<Point, int> > que;\n    que.push(make_pair(src, 1));\n\n    while(!que.empty())\n    {\n        Point pt = que.front().first;\n        int dis = que.front().second;\n        que.pop();\n\n        for(int i = 0; i!= 4; i++)\n        {\n            if(pt.connect(i))\n            {\n                Point nxt = pt.next(i);\n                if(dis+1 < color[nxt.x][nxt.y])\n                {\n                    color[nxt.x][nxt.y] = dis + 1;\n                    que.push(make_pair(nxt, color[nxt.x][nxt.y]));\n                }\n            }\n        }\n    }\n}\n\nint main(int argc, char *argv[])\n{\n    freopen(\&quot;maze1.in\&quot;, \&quot;r\&quot;, stdin);\n#ifndef USACO\n    freopen(\&quot;maze1.out\&quot;, \&quot;w\&quot;, stdout);\n#endif // USACO\n\n\n    scanf(\&quot;%d %d\&quot;, &amp;w, &amp;h); getchar();\n    init();\n\n    Point extCell[2];\n    int extCnt = 0;\n\n    char line[2*W + 2];\n\n    // first line\n    gets(line);\n    for(int i = 0; i!= strlen(line); i++)\n    {\n        if(line[i] == \u0027 ')\n            extCell[extCnt++] = Point(0, (i - 1) / 2);\n    }\n    for(int i = 0; i!= 2 * h - 1; i++)\n    {\n        gets(line);\n        if(i &amp; 1)\n        {\n            for(int j = 0; j != strlen(line); j++)\n            {\n                if(line[j] == ' ')\n                {\n                    addEdge(Point((i-1)/2, (j-1)/2),\n                            Point((i+1)/2, (j-1)/2) );\n                }\n            }\n        }\n        else\n        {\n            if(line[0] == ' ')\n            {\n                extCell[extCnt++] = Point(i / 2, 0);\n            }\n            if(line[strlen(line) - 1] == ' ')\n            {\n                extCell[extCnt++] = Point(i / 2, w - 1);\n            }\n            for(int j = 2; j< strlen(line) - 1; j+= 2)\n            {\n                if(line[j] == ' ')\n                {\n                    addEdge(Point(i/2, j/2 - 1),\n                            Point(i/2, j/2) );\n                }\n            }\n        }\n    }\n    // last line\n    gets(line);\n    for(int i = 0; i!= strlen(line); i++)\n    {\n        if(line[i] == ' ')\n            extCell[extCnt++] = Point(h-1, (i - 1) / 2);\n    }\n\n    bfs(extCell[0]);\n    bfs(extCell[1]);\n\n    int m = 0;\n    for(int i = 0; i!= h; i++)\n        for(int j = 0; j!= w; j++)\n        m = max(m, color[i][j]);\n\n    printf(\&quot;%d\\n\&quot;, m);\n\n\n    return 0;\n}&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;<span class=\&quot;token comment\&quot;>/*\nID: xjtuacm1\nPROG: maze1\nLANG: C++\n*/</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;iostream></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;stack></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstring></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstdio></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;queue></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;algorithm></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;set></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;map></span></span>\n<span class=\&quot;token keyword\&quot;>using</span> <span class=\&quot;token keyword\&quot;>namespace</span> std<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> W <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>38</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> H <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>100</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> INF <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0x3f3f3f3f</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> dir<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>4</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token punctuation\&quot;>{</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token number\&quot;>4</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token number\&quot;>8</span><span class=\&quot;token punctuation\&quot;>}</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> stage<span class=\&quot;token punctuation\&quot;>[</span>H<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>W<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> color<span class=\&quot;token punctuation\&quot;>[</span>H<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>W<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> h<span class=\&quot;token punctuation\&quot;>,</span> w<span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>struct</span> <span class=\&quot;token class-name\&quot;>Point</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>int</span> x<span class=\&quot;token punctuation\&quot;>,</span> y<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>Point</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> xx <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> yy <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>:</span><span class=\&quot;token function\&quot;>x</span><span class=\&quot;token punctuation\&quot;>(</span>xx<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token function\&quot;>y</span><span class=\&quot;token punctuation\&quot;>(</span>yy<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token punctuation\&quot;>{</span><span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token keyword\&quot;>operator</span><span class=\&quot;token operator\&quot;>&amp;lt;</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>const</span> Point<span class=\&quot;token operator\&quot;>&amp;amp;</span> rhs<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token keyword\&quot;>const</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>x <span class=\&quot;token operator\&quot;>==</span> rhs<span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token keyword\&quot;>return</span> y <span class=\&quot;token operator\&quot;>&amp;lt;</span> rhs<span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>return</span> x <span class=\&quot;token operator\&quot;>&amp;lt;</span> rhs<span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token function\&quot;>connect</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> d<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token keyword\&quot;>const</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token operator\&quot;>!</span><span class=\&quot;token punctuation\&quot;>(</span>stage<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>y<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span> dir<span class=\&quot;token punctuation\&quot;>[</span>d<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    Point <span class=\&quot;token function\&quot;>next</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> d<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token keyword\&quot;>const</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>switch</span><span class=\&quot;token punctuation\&quot;>(</span>dir<span class=\&quot;token punctuation\&quot;>[</span>d<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>case</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token operator\&quot;>:</span>\n            <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token function\&quot;>Point</span><span class=\&quot;token punctuation\&quot;>(</span>x<span class=\&quot;token punctuation\&quot;>,</span> y<span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>case</span> <span class=\&quot;token number\&quot;>2</span><span class=\&quot;token operator\&quot;>:</span>\n            <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token function\&quot;>Point</span><span class=\&quot;token punctuation\&quot;>(</span>x<span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> y<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>case</span> <span class=\&quot;token number\&quot;>4</span><span class=\&quot;token operator\&quot;>:</span>\n            <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token function\&quot;>Point</span><span class=\&quot;token punctuation\&quot;>(</span>x<span class=\&quot;token punctuation\&quot;>,</span> y<span class=\&quot;token operator\&quot;>+</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>case</span> <span class=\&quot;token number\&quot;>8</span><span class=\&quot;token operator\&quot;>:</span>\n            <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token function\&quot;>Point</span><span class=\&quot;token punctuation\&quot;>(</span>x<span class=\&quot;token operator\&quot;>+</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> y<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token function\&quot;>Point</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>init</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> h<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> j <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>!=</span> w<span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            stage<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0xF</span><span class=\&quot;token punctuation\&quot;>;</span>\n            color<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> INF<span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>addEdge</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>const</span> Point<span class=\&quot;token operator\&quot;>&amp;amp;</span> u<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>const</span> Point<span class=\&quot;token operator\&quot;>&amp;amp;</span> v<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>const</span> Point<span class=\&quot;token operator\&quot;>&amp;amp;</span> a <span class=\&quot;token operator\&quot;>=</span> u<span class=\&quot;token operator\&quot;>&amp;lt;</span>v <span class=\&quot;token operator\&quot;>?</span> u <span class=\&quot;token operator\&quot;>:</span> v<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>const</span> Point<span class=\&quot;token operator\&quot;>&amp;amp;</span> b <span class=\&quot;token operator\&quot;>=</span> u<span class=\&quot;token operator\&quot;>&amp;lt;</span>v <span class=\&quot;token operator\&quot;>?</span> v <span class=\&quot;token operator\&quot;>:</span> u<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>a<span class=\&quot;token punctuation\&quot;>.</span>x <span class=\&quot;token operator\&quot;>==</span> b<span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        stage<span class=\&quot;token punctuation\&quot;>[</span>a<span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>a<span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>^=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token operator\&quot;>&amp;lt;&amp;lt;</span><span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>;</span>\n        stage<span class=\&quot;token punctuation\&quot;>[</span>b<span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>b<span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>^=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>a<span class=\&quot;token punctuation\&quot;>.</span>y <span class=\&quot;token operator\&quot;>==</span> b<span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        stage<span class=\&quot;token punctuation\&quot;>[</span>a<span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>a<span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>^=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token operator\&quot;>&amp;lt;&amp;lt;</span><span class=\&quot;token number\&quot;>3</span><span class=\&quot;token punctuation\&quot;>;</span>\n        stage<span class=\&quot;token punctuation\&quot;>[</span>b<span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>b<span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>^=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token operator\&quot;>&amp;lt;&amp;lt;</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>bfs</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>const</span> Point<span class=\&quot;token operator\&quot;>&amp;amp;</span> src<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    color<span class=\&quot;token punctuation\&quot;>[</span>src<span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>src<span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n    queue<span class=\&quot;token operator\&quot;>&amp;lt;</span>pair<span class=\&quot;token operator\&quot;>&amp;lt;</span>Point<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span><span class=\&quot;token operator\&quot;>></span> <span class=\&quot;token operator\&quot;>></span> que<span class=\&quot;token punctuation\&quot;>;</span>\n    que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>push</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>make_pair</span><span class=\&quot;token punctuation\&quot;>(</span>src<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>!</span>que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>empty</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        Point pt <span class=\&quot;token operator\&quot;>=</span> que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>front</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>.</span>first<span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>int</span> dis <span class=\&quot;token operator\&quot;>=</span> que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>front</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>.</span>second<span class=\&quot;token punctuation\&quot;>;</span>\n        que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>pop</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token number\&quot;>4</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>pt<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>connect</span><span class=\&quot;token punctuation\&quot;>(</span>i<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                Point nxt <span class=\&quot;token operator\&quot;>=</span> pt<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>next</span><span class=\&quot;token punctuation\&quot;>(</span>i<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>dis<span class=\&quot;token operator\&quot;>+</span><span class=\&quot;token number\&quot;>1</span> <span class=\&quot;token operator\&quot;>&amp;lt;</span> color<span class=\&quot;token punctuation\&quot;>[</span>nxt<span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>nxt<span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token punctuation\&quot;>{</span>\n                    color<span class=\&quot;token punctuation\&quot;>[</span>nxt<span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>nxt<span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> dis <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n                    que<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>push</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>make_pair</span><span class=\&quot;token punctuation\&quot;>(</span>nxt<span class=\&quot;token punctuation\&quot;>,</span> color<span class=\&quot;token punctuation\&quot;>[</span>nxt<span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>nxt<span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token punctuation\&quot;>}</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>main</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> argc<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>char</span> <span class=\&quot;token operator\&quot;>*</span>argv<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;maze1.in\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;r\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdin</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>ifndef</span> <span class=\&quot;token expression\&quot;>USACO</span></span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;maze1.out\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;w\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdout</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>endif</span> <span class=\&quot;token comment\&quot;>// USACO</span></span>\n\n\n    <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d %d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>w<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>h<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span> <span class=\&quot;token function\&quot;>getchar</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>init</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    Point extCell<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>int</span> extCnt <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>char</span> line<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>2</span><span class=\&quot;token operator\&quot;>*</span>W <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token comment\&quot;>// first line</span>\n    <span class=\&quot;token function\&quot;>gets</span><span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token function\&quot;>strlen</span><span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token char\&quot;>' '</span><span class=\&quot;token punctuation\&quot;>)</span>\n            extCell<span class=\&quot;token punctuation\&quot;>[</span>extCnt<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>Point</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token punctuation\&quot;>(</span>i <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>/</span> <span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token number\&quot;>2</span> <span class=\&quot;token operator\&quot;>*</span> h <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token function\&quot;>gets</span><span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>i <span class=\&quot;token operator\&quot;>&amp;amp;</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> j <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> j <span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token function\&quot;>strlen</span><span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token char\&quot;>' '</span><span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token punctuation\&quot;>{</span>\n                    <span class=\&quot;token function\&quot;>addEdge</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>Point</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>(</span>i<span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token operator\&quot;>/</span><span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token punctuation\&quot;>(</span>j<span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token operator\&quot;>/</span><span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>,</span>\n                            <span class=\&quot;token function\&quot;>Point</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>(</span>i<span class=\&quot;token operator\&quot;>+</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token operator\&quot;>/</span><span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token punctuation\&quot;>(</span>j<span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token operator\&quot;>/</span><span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token punctuation\&quot;>}</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token keyword\&quot;>else</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token char\&quot;>' '</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                extCell<span class=\&quot;token punctuation\&quot;>[</span>extCnt<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>Point</span><span class=\&quot;token punctuation\&quot;>(</span>i <span class=\&quot;token operator\&quot;>/</span> <span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n            <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token function\&quot;>strlen</span><span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token char\&quot;>' '</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                extCell<span class=\&quot;token punctuation\&quot;>[</span>extCnt<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>Point</span><span class=\&quot;token punctuation\&quot;>(</span>i <span class=\&quot;token operator\&quot;>/</span> <span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>,</span> w <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n            <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> j <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>&amp;lt;</span> <span class=\&quot;token function\&quot;>strlen</span><span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>+=</span> <span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token char\&quot;>' '</span><span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token punctuation\&quot;>{</span>\n                    <span class=\&quot;token function\&quot;>addEdge</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>Point</span><span class=\&quot;token punctuation\&quot;>(</span>i<span class=\&quot;token operator\&quot;>/</span><span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>,</span> j<span class=\&quot;token operator\&quot;>/</span><span class=\&quot;token number\&quot;>2</span> <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>,</span>\n                            <span class=\&quot;token function\&quot;>Point</span><span class=\&quot;token punctuation\&quot;>(</span>i<span class=\&quot;token operator\&quot;>/</span><span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>,</span> j<span class=\&quot;token operator\&quot;>/</span><span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token punctuation\&quot;>}</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token comment\&quot;>// last line</span>\n    <span class=\&quot;token function\&quot;>gets</span><span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token function\&quot;>strlen</span><span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token char\&quot;>' '</span><span class=\&quot;token punctuation\&quot;>)</span>\n            extCell<span class=\&quot;token punctuation\&quot;>[</span>extCnt<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>Point</span><span class=\&quot;token punctuation\&quot;>(</span>h<span class=\&quot;token operator\&quot;>-</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token punctuation\&quot;>(</span>i <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>/</span> <span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token function\&quot;>bfs</span><span class=\&quot;token punctuation\&quot;>(</span>extCell<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>bfs</span><span class=\&quot;token punctuation\&quot;>(</span>extCell<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>int</span> m <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> h<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> j <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>!=</span> w<span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        m <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>max</span><span class=\&quot;token punctuation\&quot;>(</span>m<span class=\&quot;token punctuation\&quot;>,</span> color<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token function\&quot;>printf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> m<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>&quot;,&quot;plugins&quot;:{&quot;lineNumbers&quot;:true}}"><span class="token comment">/*ID: xjtuacm1PROG: maze1LANG: C++*/</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;iostream&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;stack&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstring&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstdio&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;queue&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;algorithm&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;set&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;map&gt;</span></span><span class="token keyword">using</span> <span class="token keyword">namespace</span> std<span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> W <span class="token operator">=</span> <span class="token number">38</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> H <span class="token operator">=</span> <span class="token number">100</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> INF <span class="token operator">=</span> <span class="token number">0x3f3f3f3f</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> dir<span class="token punctuation">[</span><span class="token number">4</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">{</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">8</span><span class="token punctuation">}</span><span class="token punctuation">;</span><span class="token keyword">int</span> stage<span class="token punctuation">[</span>H<span class="token punctuation">]</span><span class="token punctuation">[</span>W<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span> color<span class="token punctuation">[</span>H<span class="token punctuation">]</span><span class="token punctuation">[</span>W<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span> h<span class="token punctuation">,</span> w<span class="token punctuation">;</span><span class="token keyword">struct</span> <span class="token class-name">Point</span><span class="token punctuation">{</span>    <span class="token keyword">int</span> x<span class="token punctuation">,</span> y<span class="token punctuation">;</span>    <span class="token function">Point</span><span class="token punctuation">(</span><span class="token keyword">int</span> xx <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token keyword">int</span> yy <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token operator">:</span><span class="token function">x</span><span class="token punctuation">(</span>xx<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">y</span><span class="token punctuation">(</span>yy<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>    <span class="token keyword">bool</span> <span class="token keyword">operator</span><span class="token operator">&lt;</span><span class="token punctuation">(</span><span class="token keyword">const</span> Point<span class="token operator">&amp;</span> rhs<span class="token punctuation">)</span> <span class="token keyword">const</span>    <span class="token punctuation">{</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>x <span class="token operator">==</span> rhs<span class="token punctuation">.</span>x<span class="token punctuation">)</span>            <span class="token keyword">return</span> y <span class="token operator">&lt;</span> rhs<span class="token punctuation">.</span>y<span class="token punctuation">;</span>        <span class="token keyword">return</span> x <span class="token operator">&lt;</span> rhs<span class="token punctuation">.</span>x<span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">bool</span> <span class="token function">connect</span><span class="token punctuation">(</span><span class="token keyword">int</span> d<span class="token punctuation">)</span> <span class="token keyword">const</span>    <span class="token punctuation">{</span>        <span class="token keyword">return</span> <span class="token operator">!</span><span class="token punctuation">(</span>stage<span class="token punctuation">[</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>y<span class="token punctuation">]</span> <span class="token operator">&amp;</span> dir<span class="token punctuation">[</span>d<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    Point <span class="token function">next</span><span class="token punctuation">(</span><span class="token keyword">int</span> d<span class="token punctuation">)</span> <span class="token keyword">const</span>    <span class="token punctuation">{</span>        <span class="token keyword">switch</span><span class="token punctuation">(</span>dir<span class="token punctuation">[</span>d<span class="token punctuation">]</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>        <span class="token keyword">case</span> <span class="token number">1</span><span class="token operator">:</span>            <span class="token keyword">return</span> <span class="token function">Point</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> y<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">case</span> <span class="token number">2</span><span class="token operator">:</span>            <span class="token keyword">return</span> <span class="token function">Point</span><span class="token punctuation">(</span>x<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> y<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">case</span> <span class="token number">4</span><span class="token operator">:</span>            <span class="token keyword">return</span> <span class="token function">Point</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> y<span class="token operator">+</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">case</span> <span class="token number">8</span><span class="token operator">:</span>            <span class="token keyword">return</span> <span class="token function">Point</span><span class="token punctuation">(</span>x<span class="token operator">+</span><span class="token number">1</span><span class="token punctuation">,</span> y<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token keyword">return</span> <span class="token function">Point</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">;</span><span class="token keyword">void</span> <span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> h<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> j<span class="token operator">!=</span> w<span class="token punctuation">;</span> j<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            stage<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">0xF</span><span class="token punctuation">;</span>            color<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">=</span> INF<span class="token punctuation">;</span>        <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token keyword">void</span> <span class="token function">addEdge</span><span class="token punctuation">(</span><span class="token keyword">const</span> Point<span class="token operator">&amp;</span> u<span class="token punctuation">,</span> <span class="token keyword">const</span> Point<span class="token operator">&amp;</span> v<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">const</span> Point<span class="token operator">&amp;</span> a <span class="token operator">=</span> u<span class="token operator">&lt;</span>v <span class="token operator">?</span> u <span class="token operator">:</span> v<span class="token punctuation">;</span>    <span class="token keyword">const</span> Point<span class="token operator">&amp;</span> b <span class="token operator">=</span> u<span class="token operator">&lt;</span>v <span class="token operator">?</span> v <span class="token operator">:</span> u<span class="token punctuation">;</span>    <span class="token keyword">if</span><span class="token punctuation">(</span>a<span class="token punctuation">.</span>x <span class="token operator">==</span> b<span class="token punctuation">.</span>x<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        stage<span class="token punctuation">[</span>a<span class="token punctuation">.</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>a<span class="token punctuation">.</span>y<span class="token punctuation">]</span> <span class="token operator">^=</span> <span class="token number">1</span><span class="token operator">&lt;&lt;</span><span class="token number">2</span><span class="token punctuation">;</span>        stage<span class="token punctuation">[</span>b<span class="token punctuation">.</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>b<span class="token punctuation">.</span>y<span class="token punctuation">]</span> <span class="token operator">^=</span> <span class="token number">1</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">if</span><span class="token punctuation">(</span>a<span class="token punctuation">.</span>y <span class="token operator">==</span> b<span class="token punctuation">.</span>y<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        stage<span class="token punctuation">[</span>a<span class="token punctuation">.</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>a<span class="token punctuation">.</span>y<span class="token punctuation">]</span> <span class="token operator">^=</span> <span class="token number">1</span><span class="token operator">&lt;&lt;</span><span class="token number">3</span><span class="token punctuation">;</span>        stage<span class="token punctuation">[</span>b<span class="token punctuation">.</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>b<span class="token punctuation">.</span>y<span class="token punctuation">]</span> <span class="token operator">^=</span> <span class="token number">1</span><span class="token operator">&lt;&lt;</span><span class="token number">1</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token keyword">void</span> <span class="token function">bfs</span><span class="token punctuation">(</span><span class="token keyword">const</span> Point<span class="token operator">&amp;</span> src<span class="token punctuation">)</span><span class="token punctuation">{</span>    color<span class="token punctuation">[</span>src<span class="token punctuation">.</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>src<span class="token punctuation">.</span>y<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>    queue<span class="token operator">&lt;</span>pair<span class="token operator">&lt;</span>Point<span class="token punctuation">,</span> <span class="token keyword">int</span><span class="token operator">&gt;</span> <span class="token operator">&gt;</span> que<span class="token punctuation">;</span>    que<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token function">make_pair</span><span class="token punctuation">(</span>src<span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">while</span><span class="token punctuation">(</span><span class="token operator">!</span>que<span class="token punctuation">.</span><span class="token function">empty</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        Point pt <span class="token operator">=</span> que<span class="token punctuation">.</span><span class="token function">front</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>first<span class="token punctuation">;</span>        <span class="token keyword">int</span> dis <span class="token operator">=</span> que<span class="token punctuation">.</span><span class="token function">front</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>second<span class="token punctuation">;</span>        que<span class="token punctuation">.</span><span class="token function">pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> <span class="token number">4</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token keyword">if</span><span class="token punctuation">(</span>pt<span class="token punctuation">.</span><span class="token function">connect</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                Point nxt <span class="token operator">=</span> pt<span class="token punctuation">.</span><span class="token function">next</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span>                <span class="token keyword">if</span><span class="token punctuation">(</span>dis<span class="token operator">+</span><span class="token number">1</span> <span class="token operator">&lt;</span> color<span class="token punctuation">[</span>nxt<span class="token punctuation">.</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>nxt<span class="token punctuation">.</span>y<span class="token punctuation">]</span><span class="token punctuation">)</span>                <span class="token punctuation">{</span>                    color<span class="token punctuation">[</span>nxt<span class="token punctuation">.</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>nxt<span class="token punctuation">.</span>y<span class="token punctuation">]</span> <span class="token operator">=</span> dis <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span>                    que<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token function">make_pair</span><span class="token punctuation">(</span>nxt<span class="token punctuation">,</span> color<span class="token punctuation">[</span>nxt<span class="token punctuation">.</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>nxt<span class="token punctuation">.</span>y<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>                <span class="token punctuation">}</span>            <span class="token punctuation">}</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token keyword">int</span> argc<span class="token punctuation">,</span> <span class="token keyword">char</span> <span class="token operator">*</span>argv<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"maze1.in"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">,</span> <span class="token constant">stdin</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">ifndef</span> <span class="token expression">USACO</span></span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"maze1.out"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">,</span> <span class="token constant">stdout</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">endif</span> <span class="token comment">// USACO</span></span>    <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d %d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>w<span class="token punctuation">,</span> <span class="token operator">&amp;</span>h<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">getchar</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    Point extCell<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">;</span>    <span class="token keyword">int</span> extCnt <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>    <span class="token keyword">char</span> line<span class="token punctuation">[</span><span class="token number">2</span><span class="token operator">*</span>W <span class="token operator">+</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">;</span>    <span class="token comment">// first line</span>    <span class="token function">gets</span><span class="token punctuation">(</span>line<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> <span class="token function">strlen</span><span class="token punctuation">(</span>line<span class="token punctuation">)</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>line<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token char">' '</span><span class="token punctuation">)</span>            extCell<span class="token punctuation">[</span>extCnt<span class="token operator">++</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">Point</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token punctuation">(</span>i <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> <span class="token number">2</span> <span class="token operator">*</span> h <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token function">gets</span><span class="token punctuation">(</span>line<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>i <span class="token operator">&amp;</span> <span class="token number">1</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> j <span class="token operator">!=</span> <span class="token function">strlen</span><span class="token punctuation">(</span>line<span class="token punctuation">)</span><span class="token punctuation">;</span> j<span class="token operator">++</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                <span class="token keyword">if</span><span class="token punctuation">(</span>line<span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token char">' '</span><span class="token punctuation">)</span>                <span class="token punctuation">{</span>                    <span class="token function">addEdge</span><span class="token punctuation">(</span><span class="token function">Point</span><span class="token punctuation">(</span><span class="token punctuation">(</span>i<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token operator">/</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token punctuation">(</span>j<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token operator">/</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">,</span>                            <span class="token function">Point</span><span class="token punctuation">(</span><span class="token punctuation">(</span>i<span class="token operator">+</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token operator">/</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token punctuation">(</span>j<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token operator">/</span><span class="token number">2</span><span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>                <span class="token punctuation">}</span>            <span class="token punctuation">}</span>        <span class="token punctuation">}</span>        <span class="token keyword">else</span>        <span class="token punctuation">{</span>            <span class="token keyword">if</span><span class="token punctuation">(</span>line<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token char">' '</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                extCell<span class="token punctuation">[</span>extCnt<span class="token operator">++</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">Point</span><span class="token punctuation">(</span>i <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token punctuation">}</span>            <span class="token keyword">if</span><span class="token punctuation">(</span>line<span class="token punctuation">[</span><span class="token function">strlen</span><span class="token punctuation">(</span>line<span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token char">' '</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                extCell<span class="token punctuation">[</span>extCnt<span class="token operator">++</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">Point</span><span class="token punctuation">(</span>i <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">,</span> w <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token punctuation">}</span>            <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span> j<span class="token operator">&lt;</span> <span class="token function">strlen</span><span class="token punctuation">(</span>line<span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span> j<span class="token operator">+=</span> <span class="token number">2</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                <span class="token keyword">if</span><span class="token punctuation">(</span>line<span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token char">' '</span><span class="token punctuation">)</span>                <span class="token punctuation">{</span>                    <span class="token function">addEdge</span><span class="token punctuation">(</span><span class="token function">Point</span><span class="token punctuation">(</span>i<span class="token operator">/</span><span class="token number">2</span><span class="token punctuation">,</span> j<span class="token operator">/</span><span class="token number">2</span> <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">,</span>                            <span class="token function">Point</span><span class="token punctuation">(</span>i<span class="token operator">/</span><span class="token number">2</span><span class="token punctuation">,</span> j<span class="token operator">/</span><span class="token number">2</span><span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>                <span class="token punctuation">}</span>            <span class="token punctuation">}</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token comment">// last line</span>    <span class="token function">gets</span><span class="token punctuation">(</span>line<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> <span class="token function">strlen</span><span class="token punctuation">(</span>line<span class="token punctuation">)</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>line<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token char">' '</span><span class="token punctuation">)</span>            extCell<span class="token punctuation">[</span>extCnt<span class="token operator">++</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">Point</span><span class="token punctuation">(</span>h<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token punctuation">(</span>i <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token function">bfs</span><span class="token punctuation">(</span>extCell<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token function">bfs</span><span class="token punctuation">(</span>extCell<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">int</span> m <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> h<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> j<span class="token operator">!=</span> w<span class="token punctuation">;</span> j<span class="token operator">++</span><span class="token punctuation">)</span>        m <span class="token operator">=</span> <span class="token function">max</span><span class="token punctuation">(</span>m<span class="token punctuation">,</span> color<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%d\n"</span><span class="token punctuation">,</span> m<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>]]></content>
    
    
    <summary type="html">&lt;p&gt;题意是给你一个迷宫，有两个出口，找出最长的从迷宫内任意一点到出口的最短距离。&lt;/p&gt;
&lt;p&gt;一开始想到的是dijkstra，在两个出口分别运行一次，取每个点到两个出口距离中最短的，再去其中最大的即可。&lt;/p&gt;
&lt;p&gt;然后想到其实分别从两个出口作BFS，标注每个点的距离即可。&lt;/p&gt;
&lt;pre class=&quot;line-numbers language-cpp&quot; style=&quot;max-height: 30em&quot; data-prismjs-copy-timeout=&quot;500&quot; tabindex=&quot;0&quot;&gt;&lt;code id=&quot;bf989f3d&quot; class=&quot;language-cpp&quot; data-prism-hydrate=&quot;{&amp;quot;element&amp;quot;:&amp;quot;bf989f3d&amp;quot;,&amp;quot;language&amp;quot;:&amp;quot;cpp&amp;quot;,&amp;quot;code&amp;quot;:&amp;quot;/*&#92;nID: xjtuacm1&#92;nPROG: maze1&#92;nLANG: C++&#92;n*/&#92;n#include&#92;u003ciostream&#92;u003e&#92;n#include&lt;stack&gt;&#92;n#include&lt;cstring&gt;&#92;n#include&lt;cstdio&gt;&#92;n#include&lt;queue&gt;&#92;n#include&lt;algorithm&gt;&#92;n#include&lt;set&gt;&#92;n#include&lt;map&gt;&#92;nusing namespace std;&#92;nconst int W = 38;&#92;nconst int H = 100;&#92;nconst int INF = 0x3f3f3f3f;&#92;n&#92;nconst int dir[4] = { 1, 2, 4, 8};&#92;n&#92;nint stage[H][W];&#92;nint color[H][W];&#92;nint h, w;&#92;n&#92;nstruct Point&#92;n{&#92;n    int x, y;&#92;n    Point(int xx = 0, int yy = 0) :x(xx), y(yy) {}&#92;n    bool operator&lt;(const Point&#92;u0026 rhs) const&#92;n    {&#92;n        if(x == rhs.x)&#92;n            return y &lt; rhs.y;&#92;n        return x &lt; rhs.x;&#92;n    }&#92;n&#92;n    bool connect(int d) const&#92;n    {&#92;n        return !(stage[x][y] &amp;amp; dir[d]);&#92;n    }&#92;n&#92;n    Point next(int d) const&#92;n    {&#92;n        switch(dir[d])&#92;n        {&#92;n        case 1:&#92;n            return Point(x, y-1);&#92;n        case 2:&#92;n            return Point(x-1, y);&#92;n        case 4:&#92;n            return Point(x, y+1);&#92;n        case 8:&#92;n            return Point(x+1, y);&#92;n        }&#92;n        return Point();&#92;n    }&#92;n};&#92;n&#92;nvoid init()&#92;n{&#92;n    for(int i = 0; i!= h; i++)&#92;n        for(int j = 0; j!= w; j++)&#92;n        {&#92;n            stage[i][j] = 0xF;&#92;n            color[i][j] = INF;&#92;n        }&#92;n}&#92;n&#92;nvoid addEdge(const Point&amp;amp; u, const Point&amp;amp; v)&#92;n{&#92;n    const Point&amp;amp; a = u&lt;v ? u : v;&#92;n    const Point&amp;amp; b = u&lt;v ? v : u;&#92;n    if(a.x == b.x)&#92;n    {&#92;n        stage[a.x][a.y] ^= 1&lt;&lt;2;&#92;n        stage[b.x][b.y] ^= 1;&#92;n    }&#92;n    if(a.y == b.y)&#92;n    {&#92;n        stage[a.x][a.y] ^= 1&lt;&lt;3;&#92;n        stage[b.x][b.y] ^= 1&lt;&lt;1;&#92;n    }&#92;n}&#92;n&#92;nvoid bfs(const Point&amp;amp; src)&#92;n{&#92;n    color[src.x][src.y] = 1;&#92;n    queue&lt;pair&lt;Point, int&gt; &gt; que;&#92;n    que.push(make_pair(src, 1));&#92;n&#92;n    while(!que.empty())&#92;n    {&#92;n        Point pt = que.front().first;&#92;n        int dis = que.front().second;&#92;n        que.pop();&#92;n&#92;n        for(int i = 0; i!= 4; i++)&#92;n        {&#92;n            if(pt.connect(i))&#92;n            {&#92;n                Point nxt = pt.next(i);&#92;n                if(dis+1 &lt; color[nxt.x][nxt.y])&#92;n                {&#92;n                    color[nxt.x][nxt.y] = dis + 1;&#92;n                    que.push(make_pair(nxt, color[nxt.x][nxt.y]));&#92;n                }&#92;n            }&#92;n        }&#92;n    }&#92;n}&#92;n&#92;nint main(int argc, char *argv[])&#92;n{&#92;n    freopen(&#92;&amp;quot;maze1.in&#92;&amp;quot;, &#92;&amp;quot;r&#92;&amp;quot;, stdin);&#92;n#ifndef USACO&#92;n    freopen(&#92;&amp;quot;maze1.out&#92;&amp;quot;, &#92;&amp;quot;w&#92;&amp;quot;, stdout);&#92;n#endif // USACO&#92;n&#92;n&#92;n    scanf(&#92;&amp;quot;%d %d&#92;&amp;quot;, &amp;amp;w, &amp;amp;h); getchar();&#92;n    init();&#92;n&#92;n    Point extCell[2];&#92;n    int extCnt = 0;&#92;n&#92;n    char line[2*W + 2];&#92;n&#92;n    // first line&#92;n    gets(line);&#92;n    for(int i = 0; i!= strlen(line); i++)&#92;n    {&#92;n        if(line[i] == &#92;u0027 &#39;)&#92;n            extCell[extCnt++] = Point(0, (i - 1) / 2);&#92;n    }&#92;n    for(int i = 0; i!= 2 * h - 1; i++)&#92;n    {&#92;n        gets(line);&#92;n        if(i &amp;amp; 1)&#92;n        {&#92;n            for(int j = 0; j != strlen(line); j++)&#92;n            {&#92;n                if(line[j] == &#39; &#39;)&#92;n                {&#92;n                    addEdge(Point((i-1)/2, (j-1)/2),&#92;n                            Point((i+1)/2, (j-1)/2) );&#92;n                }&#92;n            }&#92;n        }&#92;n        else&#92;n        {&#92;n            if(line[0] == &#39; &#39;)&#92;n            {&#92;n                extCell[extCnt++] = Point(i / 2, 0);&#92;n            }&#92;n            if(line[strlen(line) - 1] == &#39; &#39;)&#92;n            {&#92;n                extCell[extCnt++] = Point(i / 2, w - 1);&#92;n            }&#92;n            for(int j = 2; j&lt; strlen(line) - 1; j+= 2)&#92;n            {&#92;n                if(line[j] == &#39; &#39;)&#92;n                {&#92;n                    addEdge(Point(i/2, j/2 - 1),&#92;n                            Point(i/2, j/2) );&#92;n                }&#92;n            }&#92;n        }&#92;n    }&#92;n    // last line&#92;n    gets(line);&#92;n    for(int i = 0; i!= strlen(line); i++)&#92;n    {&#92;n        if(line[i] == &#39; &#39;)&#92;n            extCell[extCnt++] = Point(h-1, (i - 1) / 2);&#92;n    }&#92;n&#92;n    bfs(extCell[0]);&#92;n    bfs(extCell[1]);&#92;n&#92;n    int m = 0;&#92;n    for(int i = 0; i!= h; i++)&#92;n        for(int j = 0; j!= w; j++)&#92;n        m = max(m, color[i][j]);&#92;n&#92;n    printf(&#92;&amp;quot;%d&#92;&#92;n&#92;&amp;quot;, m);&#92;n&#92;n&#92;n    return 0;&#92;n}&amp;quot;,&amp;quot;settings&amp;quot;:{},&amp;quot;vars&amp;quot;:{&amp;quot;command-line&amp;quot;:{&amp;quot;complete&amp;quot;:true}},&amp;quot;highlightedCode&amp;quot;:&amp;quot;&lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;/*&#92;nID: xjtuacm1&#92;nPROG: maze1&#92;nLANG: C++&#92;n*/&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;iostream&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;stack&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cstring&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cstdio&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;queue&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;algorithm&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;set&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;map&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;using&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;namespace&lt;/span&gt; std&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; W &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;38&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; H &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;100&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; INF &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0x3f3f3f3f&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; dir&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;4&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;4&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;8&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; stage&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;H&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;W&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;H&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;W&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; h&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;struct&lt;/span&gt; &lt;span class=&#92;&amp;quot;token class-name&#92;&amp;quot;&gt;Point&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Point&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; xx &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; yy &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;:&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;x&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;xx&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;y&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;yy&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;bool&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;operator&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; Point&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; rhs&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;x &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; rhs&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; y &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt; rhs&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; x &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt; rhs&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;bool&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;connect&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; d&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;stage&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; dir&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;d&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    Point &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;next&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; d&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;switch&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;dir&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;d&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;case&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;:&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Point&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; y&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;case&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;:&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Point&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;case&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;4&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;:&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Point&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; y&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;case&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;8&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;:&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Point&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Point&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;init&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; h&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            stage&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0xF&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; INF&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;addEdge&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; Point&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; Point&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; Point&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; a &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; u&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt;v &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;?&lt;/span&gt; u &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;:&lt;/span&gt; v&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; Point&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; b &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; u&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt;v &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;?&lt;/span&gt; v &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;:&lt;/span&gt; u&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        stage&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;^=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&amp;amp;lt;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        stage&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;^=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        stage&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;a&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;^=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&amp;amp;lt;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;3&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        stage&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;b&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;^=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&amp;amp;lt;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;bfs&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; Point&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; src&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;src&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;src&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    queue&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt;pair&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt;Point&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt; que&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    que&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;push&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;make_pair&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;src&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;while&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!&lt;/span&gt;que&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;empty&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        Point pt &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; que&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;front&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;first&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; dis &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; que&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;front&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;second&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        que&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;pop&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;4&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;pt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;connect&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                Point nxt &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; pt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;next&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;dis&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt; color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;nxt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;nxt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                    color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;nxt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;nxt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; dis &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                    que&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;push&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;make_pair&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;nxt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;nxt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;x&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;nxt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;y&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;main&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; argc&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;argv&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;maze1.in&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;r&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdin&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;ifndef&lt;/span&gt; &lt;span class=&#92;&amp;quot;token expression&#92;&amp;quot;&gt;USACO&lt;/span&gt;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;maze1.out&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;w&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdout&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;endif&lt;/span&gt; &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// USACO&lt;/span&gt;&lt;/span&gt;&#92;n&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;scanf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d %d&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;h&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;getchar&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;init&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    Point extCell&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; extCnt &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt; line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;W &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// first line&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;gets&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;strlen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; &lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39; &#39;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            extCell&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;extCnt&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Point&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;/&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt; h &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;gets&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;strlen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; &lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39; &#39;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;addEdge&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Point&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;/&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;/&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt;&#92;n                            &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Point&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;/&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;/&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;else&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; &lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39; &#39;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                extCell&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;extCnt&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Point&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;/&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;strlen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; &lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39; &#39;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                extCell&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;extCnt&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Point&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;/&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; w &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;lt;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;strlen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; &lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39; &#39;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;addEdge&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Point&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;/&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;/&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt;&#92;n                            &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Point&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;/&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;/&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// last line&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;gets&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;strlen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;line&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; &lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39; &#39;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            extCell&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;extCnt&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;Point&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;h&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;/&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;bfs&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;extCell&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;bfs&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;extCell&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; m &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; h&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; w&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        m &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;max&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;m&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; color&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;printf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d&#92;&#92;n&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; m&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&amp;quot;,&amp;quot;plugins&amp;quot;:{&amp;quot;lineNumbers&amp;quot;:true}}&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/*
ID: xjtuacm1
PROG: maze1
LANG: C++
*/&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;stack&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cstring&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cstdio&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;queue&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;algorithm&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;set&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;map&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;namespace&lt;/span&gt; std&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; W &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;38&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; H &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; INF &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0x3f3f3f3f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; dir&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; stage&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;H&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;W&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;H&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;W&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; h&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Point&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;Point&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; xx &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; yy &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;xx&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;yy&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;operator&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; Point&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; rhs&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; rhs&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; y &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; rhs&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; x &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; rhs&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; d&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;stage&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; dir&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;d&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    Point &lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; d&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;dir&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;d&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Point&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Point&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Point&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Point&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Point&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; h&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            stage&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0xF&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; INF&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;addEdge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; Point&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; u&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; Point&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; Point&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; u&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;v &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; u &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; Point&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; b &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; u&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;v &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; v &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; u&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        stage&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;^=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        stage&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;^=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        stage&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;^=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        stage&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;^=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;bfs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; Point&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; src&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;src&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;src&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    queue&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;pair&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;Point&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; que&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    que&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;make_pair&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;src&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;que&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;empty&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Point pt &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; que&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;front&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;first&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; dis &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; que&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;front&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;second&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        que&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;pop&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                Point nxt &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;dis&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;nxt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;nxt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;nxt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;nxt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; dis &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                    que&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;make_pair&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;nxt&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;nxt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;nxt&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; argc&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;argv&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;maze1.in&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifndef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;USACO&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;maze1.out&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;w&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdout&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// USACO&lt;/span&gt;&lt;/span&gt;


    &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d %d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;w&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;h&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getchar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    Point extCell&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; extCnt &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; line&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;W &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// first line&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;gets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;strlen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&#39; &#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            extCell&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;extCnt&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Point&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; h &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;gets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;strlen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&#39; &#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    &lt;span class=&quot;token function&quot;&gt;addEdge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Point&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;j&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                            &lt;span class=&quot;token function&quot;&gt;Point&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;j&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&#39; &#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                extCell&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;extCnt&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Point&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;strlen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&#39; &#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                extCell&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;extCnt&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Point&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; w &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;strlen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&#39; &#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    &lt;span class=&quot;token function&quot;&gt;addEdge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Point&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                            &lt;span class=&quot;token function&quot;&gt;Point&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// last line&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;gets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;strlen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&#39; &#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            extCell&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;extCnt&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Point&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;h&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;bfs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;extCell&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;bfs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;extCell&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; m &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; h&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        m &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;m&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&#92;n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; m&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;


    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</summary>
    
    
    
    
    <category term="ACM" scheme="https://unlimited-code.works/tags/acm/"/>
    
    <category term="USACO" scheme="https://unlimited-code.works/tags/usaco/"/>
    
    <category term="BFS" scheme="https://unlimited-code.works/tags/bfs/"/>
    
  </entry>
  
  <entry>
    <title>HDU 3234 Exclusive-OR</title>
    <link href="https://unlimited-code.works/blog/2013/02/07/hdu-3234/"/>
    <id>https://unlimited-code.works/blog/2013/02/07/hdu-3234/</id>
    <published>2013-02-08T07:15:00.000Z</published>
    <updated>2025-08-09T21:29:05.000Z</updated>
    
    <content type="html"><![CDATA[<p>扩展的并查集，参考了以下两个，结合了一下，然后对Query的部分有一些改动，主要是用了map来判断出现次数的奇偶</p><ul><li><a href="http://www.cppblog.com/Yuan/archive/2010/09/02/125667.html?opt=admin">http://www.cppblog.com/Yuan/archive/2010/09/02/125667.html?opt=admin</a></li><li><a href="http://blog.csdn.net/acm_cxlove/article/details/8101710">http://blog.csdn.net/acm_cxlove/article/details/8101710</a></li></ul><p><eq><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>X</mi><mn>1</mn></msub><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><msub><mi>X</mi><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msub></mrow><annotation encoding="application/x-tex">X_1...X_{n-1}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8917em;vertical-align:-0.2083em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.07847em;">X</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">...</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.07847em;">X</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">n</span><span class="mbin mtight">−</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.2083em;"><span></span></span></span></span></span></span></span></span></span></eq>，这是题中所说的未给出的<eq><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi></mrow><annotation encoding="application/x-tex">n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal">n</span></span></span></span></eq>个数，维护一个带权的并查集，每个点有一个权<eq><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>w</mi></mrow><annotation encoding="application/x-tex">w</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal" style="margin-right:0.02691em;">w</span></span></span></span></eq></p><p>保证有<code>w[k] = Xk ^ Xfa[k]</code>，<code>Xfa[k]</code>表示<code>Xk</code>的父亲。</p><p>对于</p><pre class="language-none" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="89243d3f" class="language-none" data-prism-hydrate="{&quot;element&quot;:&quot;89243d3f&quot;,&quot;language&quot;:&quot;none&quot;,&quot;code&quot;:&quot;I p q v&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;I p q v&quot;}">I p q v</code></pre><p>则对<code>p</code>, <code>q</code>进行Union操作，并利用<code>v</code>维护各自的权<code>w</code></p><p>对于</p><pre class="language-none" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="9ab3c13e" class="language-none" data-prism-hydrate="{&quot;element&quot;:&quot;9ab3c13e&quot;,&quot;language&quot;:&quot;none&quot;,&quot;code&quot;:&quot;I p v&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;I p v&quot;}">I p v</code></pre><p>可以加入虚拟节点<eq><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi></mrow><annotation encoding="application/x-tex">n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal">n</span></span></span></span></eq>，令<code>Xn = 0</code>， 这样任意以该节点为父亲的节点均有<code>w[k] = Xk</code>;</p><p>这样就转化成<code>I p n v</code>了</p><p>而对于每次查询</p><pre class="language-none" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="19cf1b3e" class="language-none" data-prism-hydrate="{&quot;element&quot;:&quot;19cf1b3e&quot;,&quot;language&quot;:&quot;none&quot;,&quot;code&quot;:&quot;Q k p1 p2 ... pk&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;Q k p1 p2 ... pk&quot;}">Q k p1 p2 ... pk</code></pre><p>结果<code>ans = Xp1 ^ Xp2 ^ ...  ^ Xpk = w[p1] ^ w[p2] ^ ... ^ w[pk] ^ (Xfa[p1] ^ Xfa[p2] ^ ... ^ Xfa[pk])</code>.</p><p>这里利用了性质：</p><blockquote><p>任取整数a，有</p><p>a ^ a = 0;</p><p>a ^ 0 = a;</p></blockquote><p>又因为 <code>w[p1] ... w[pk]</code> 是已知的, 只需判断 <code>Xfa[p1] ... Xfa[pk]</code> 是否已知即可，即看这些节点是否以Xn为根。</p><p>注意的一点是 <code>Xfa[p1] ... Xfa[pk]</code> 中会有重复的，只要出现了偶数次就不用计算，只用考虑出现奇数次的就行了。</p><p>另一点注意的是输入输出的形式以及输入行尾换行符的处理，我就在这个地方WA了n多次= =</p><pre class="line-numbers language-cpp" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="88760d3f" class="language-cpp" data-prism-hydrate="{&quot;element&quot;:&quot;88760d3f&quot;,&quot;language&quot;:&quot;cpp&quot;,&quot;code&quot;:&quot;#include\u003ciostream\u003e\n#include<stack>\n#include<cstring>\n#include<cstdio>\n#include<queue>\n#include<algorithm>\n#include<map>\nusing namespace std;\n\nconst int N = 20000 + 1;\nconst int K = 15;\nconst int LINELEN = 150;\n\nint fa[N], w[N];\nint n,q;\nint nfacts;\nchar line[LINELEN];\n\nvoid init()\n{\n    for(int i = 0; i<= n; i++)\n        fa[i] = i;\n    memset(w, 0, sizeof(w));\n\n    nfacts = 0;\n}\n\nint Find(int x)\n{\n    if(x != fa[x])\n    {\n        int t = fa[x];\n        fa[x] = Find(fa[x]);\n        w[x] ^= w[t];\n    }\n    return fa[x];\n}\n\nbool Union(int p, int q, int v)\n{\n    int rp = Find(p);\n    int rq = Find(q);\n    if(rp == rq)\n    {\n        return  v == (w[p] ^ w[q]);\n    }\n\n    if(rp == n) swap(rp,rq);\n\n    fa[rp] = rq;\n    w[rp] = w[p] ^ w[q] ^ v;\n    return true;\n}\n\nbool info(int a, int b, int c)\n{\n    bool rt = Union(a, b, c);\n    if(!rt)\n        printf(\&quot;The first %d facts are conflicting.\\n\&quot;, nfacts);\n    return !rt;\n}\n\nint main(int argc, char *argv[])\n{\n#ifdef ACM\n    freopen(\&quot;ttwo.in\&quot;, \&quot;r\&quot;, stdin);\n#endif // ACM\n\n    int ncase = 1;\n    while(scanf(\&quot;%d %d\&quot;, \u0026n, &amp;q), n != 0 || q != 0)\n    {\n        printf(\&quot;Case %d:\\n\&quot;, ncase++);\n        init();\n        bool conflict = false;\n\n        while(q--)\n        {\n            char tp[5];\n            scanf(\&quot;%s\&quot;, tp);\n            if(tp[0] == \u0027I')\n            {\n                nfacts++;\n                getchar();gets(line);\n                int a, b, c;\n                int rt = sscanf(line, \&quot;%d %d %d\&quot;, &amp;a, &amp;b, &amp;c);\n                if(rt == 2)\n                {\n                    c = b; b = n;\n                }\n\n                if(conflict) continue;\n\n                conflict = info(a, b, c);\n            }\n            else if(tp[0] == 'Q')\n            {\n                int k;\n                int para;\n                map<int, bool> fas;\n                bool known = true;\n                int ans = 0;\n\n                scanf(\&quot;%d\&quot;, &amp;k);\n                for(int i = 0; i!= k; i++)\n                {\n                    scanf(\&quot;%d\&quot;, &amp;para);\n\n                    if(conflict) continue;\n\n                    fas[Find(para)] = !fas[Find(para)];\n                    ans ^= w[para];\n                }\n\n                if(conflict) continue;\n\n                for(map<int, bool>::iterator it = fas.begin(); it != fas.end(); it++)\n                {\n                    if(it->second)\n                    {\n                        ans ^= w[it->first];\n                        if(!(known = (Find(it->first) == n)))\n                            break;\n                    }\n                }\n\n                if(!known)\n                {\n                    puts(\&quot;I don't know.\&quot;);\n                }\n                else\n                {\n                    printf(\&quot;%d\\n\&quot;, ans);\n                }\n            }\n        }\n\n        putchar('\\n');\n    }\n\n    return 0;\n}&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;iostream></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;stack></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstring></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstdio></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;queue></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;algorithm></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;map></span></span>\n<span class=\&quot;token keyword\&quot;>using</span> <span class=\&quot;token keyword\&quot;>namespace</span> std<span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> N <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>20000</span> <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> K <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>15</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> LINELEN <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>150</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> fa<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>,</span> w<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> n<span class=\&quot;token punctuation\&quot;>,</span>q<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> nfacts<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>char</span> line<span class=\&quot;token punctuation\&quot;>[</span>LINELEN<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>init</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>&amp;lt;=</span> n<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        fa<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> i<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>memset</span><span class=\&quot;token punctuation\&quot;>(</span>w<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>sizeof</span><span class=\&quot;token punctuation\&quot;>(</span>w<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    nfacts <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>Find</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> x<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>x <span class=\&quot;token operator\&quot;>!=</span> fa<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>int</span> t <span class=\&quot;token operator\&quot;>=</span> fa<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n        fa<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>Find</span><span class=\&quot;token punctuation\&quot;>(</span>fa<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        w<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>^=</span> w<span class=\&quot;token punctuation\&quot;>[</span>t<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token keyword\&quot;>return</span> fa<span class=\&quot;token punctuation\&quot;>[</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token function\&quot;>Union</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> p<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> q<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> v<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>int</span> rp <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>Find</span><span class=\&quot;token punctuation\&quot;>(</span>p<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>int</span> rq <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>Find</span><span class=\&quot;token punctuation\&quot;>(</span>q<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>rp <span class=\&quot;token operator\&quot;>==</span> rq<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>return</span>  v <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token punctuation\&quot;>(</span>w<span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>^</span> w<span class=\&quot;token punctuation\&quot;>[</span>q<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>rp <span class=\&quot;token operator\&quot;>==</span> n<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token function\&quot;>swap</span><span class=\&quot;token punctuation\&quot;>(</span>rp<span class=\&quot;token punctuation\&quot;>,</span>rq<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    fa<span class=\&quot;token punctuation\&quot;>[</span>rp<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> rq<span class=\&quot;token punctuation\&quot;>;</span>\n    w<span class=\&quot;token punctuation\&quot;>[</span>rp<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> w<span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>^</span> w<span class=\&quot;token punctuation\&quot;>[</span>q<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>^</span> v<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token function\&quot;>info</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> a<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> b<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> c<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>bool</span> rt <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>Union</span><span class=\&quot;token punctuation\&quot;>(</span>a<span class=\&quot;token punctuation\&quot;>,</span> b<span class=\&quot;token punctuation\&quot;>,</span> c<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>!</span>rt<span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token function\&quot;>printf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;The first %d facts are conflicting.\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> nfacts<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token operator\&quot;>!</span>rt<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>main</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> argc<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>char</span> <span class=\&quot;token operator\&quot;>*</span>argv<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>ifdef</span> <span class=\&quot;token expression\&quot;>ACM</span></span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;ttwo.in\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;r\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdin</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>endif</span> <span class=\&quot;token comment\&quot;>// ACM</span></span>\n\n    <span class=\&quot;token keyword\&quot;>int</span> ncase <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d %d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>n<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>q<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>,</span> n <span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token number\&quot;>0</span> <span class=\&quot;token operator\&quot;>||</span> q <span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token function\&quot;>printf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;Case %d:\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> ncase<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token function\&quot;>init</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>bool</span> conflict <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token boolean\&quot;>false</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n        <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span>q<span class=\&quot;token operator\&quot;>--</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token keyword\&quot;>char</span> tp<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>5</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%s\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> tp<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>tp<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token char\&quot;>'I'</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                nfacts<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token function\&quot;>getchar</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span><span class=\&quot;token function\&quot;>gets</span><span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token keyword\&quot;>int</span> a<span class=\&quot;token punctuation\&quot;>,</span> b<span class=\&quot;token punctuation\&quot;>,</span> c<span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token keyword\&quot;>int</span> rt <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>sscanf</span><span class=\&quot;token punctuation\&quot;>(</span>line<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;%d %d %d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>a<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>b<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>c<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>rt <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token punctuation\&quot;>{</span>\n                    c <span class=\&quot;token operator\&quot;>=</span> b<span class=\&quot;token punctuation\&quot;>;</span> b <span class=\&quot;token operator\&quot;>=</span> n<span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token punctuation\&quot;>}</span>\n\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>conflict<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token keyword\&quot;>continue</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n                conflict <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>info</span><span class=\&quot;token punctuation\&quot;>(</span>a<span class=\&quot;token punctuation\&quot;>,</span> b<span class=\&quot;token punctuation\&quot;>,</span> c<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n            <span class=\&quot;token keyword\&quot;>else</span> <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>tp<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token char\&quot;>'Q'</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                <span class=\&quot;token keyword\&quot;>int</span> k<span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token keyword\&quot;>int</span> para<span class=\&quot;token punctuation\&quot;>;</span>\n                map<span class=\&quot;token operator\&quot;>&amp;lt;</span><span class=\&quot;token keyword\&quot;>int</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>bool</span><span class=\&quot;token operator\&quot;>></span> fas<span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token keyword\&quot;>bool</span> known <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token keyword\&quot;>int</span> ans <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n                <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>k<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> k<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token punctuation\&quot;>{</span>\n                    <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>para<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n                    <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>conflict<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token keyword\&quot;>continue</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n                    fas<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token function\&quot;>Find</span><span class=\&quot;token punctuation\&quot;>(</span>para<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token operator\&quot;>!</span>fas<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token function\&quot;>Find</span><span class=\&quot;token punctuation\&quot;>(</span>para<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n                    ans <span class=\&quot;token operator\&quot;>^=</span> w<span class=\&quot;token punctuation\&quot;>[</span>para<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token punctuation\&quot;>}</span>\n\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>conflict<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token keyword\&quot;>continue</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n                <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span>map<span class=\&quot;token operator\&quot;>&amp;lt;</span><span class=\&quot;token keyword\&quot;>int</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>bool</span><span class=\&quot;token operator\&quot;>></span><span class=\&quot;token double-colon punctuation\&quot;>::</span>iterator it <span class=\&quot;token operator\&quot;>=</span> fas<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>begin</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span> it <span class=\&quot;token operator\&quot;>!=</span> fas<span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>end</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span> it<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token punctuation\&quot;>{</span>\n                    <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>it<span class=\&quot;token operator\&quot;>-></span>second<span class=\&quot;token punctuation\&quot;>)</span>\n                    <span class=\&quot;token punctuation\&quot;>{</span>\n                        ans <span class=\&quot;token operator\&quot;>^=</span> w<span class=\&quot;token punctuation\&quot;>[</span>it<span class=\&quot;token operator\&quot;>-></span>first<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n                        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>!</span><span class=\&quot;token punctuation\&quot;>(</span>known <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>Find</span><span class=\&quot;token punctuation\&quot;>(</span>it<span class=\&quot;token operator\&quot;>-></span>first<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>==</span> n<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n                            <span class=\&quot;token keyword\&quot;>break</span><span class=\&quot;token punctuation\&quot;>;</span>\n                    <span class=\&quot;token punctuation\&quot;>}</span>\n                <span class=\&quot;token punctuation\&quot;>}</span>\n\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>!</span>known<span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token punctuation\&quot;>{</span>\n                    <span class=\&quot;token function\&quot;>puts</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;I don't know.\&quot;</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token punctuation\&quot;>}</span>\n                <span class=\&quot;token keyword\&quot;>else</span>\n                <span class=\&quot;token punctuation\&quot;>{</span>\n                    <span class=\&quot;token function\&quot;>printf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> ans<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                <span class=\&quot;token punctuation\&quot;>}</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n\n        <span class=\&quot;token function\&quot;>putchar</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token char\&quot;>'\\n'</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>&quot;,&quot;plugins&quot;:{&quot;lineNumbers&quot;:true}}"><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;iostream&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;stack&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstring&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstdio&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;queue&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;algorithm&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;map&gt;</span></span><span class="token keyword">using</span> <span class="token keyword">namespace</span> std<span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> N <span class="token operator">=</span> <span class="token number">20000</span> <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> K <span class="token operator">=</span> <span class="token number">15</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> LINELEN <span class="token operator">=</span> <span class="token number">150</span><span class="token punctuation">;</span><span class="token keyword">int</span> fa<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">,</span> w<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span> n<span class="token punctuation">,</span>q<span class="token punctuation">;</span><span class="token keyword">int</span> nfacts<span class="token punctuation">;</span><span class="token keyword">char</span> line<span class="token punctuation">[</span>LINELEN<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">void</span> <span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">&lt;=</span> n<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        fa<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> i<span class="token punctuation">;</span>    <span class="token function">memset</span><span class="token punctuation">(</span>w<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token keyword">sizeof</span><span class="token punctuation">(</span>w<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    nfacts <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">int</span> <span class="token function">Find</span><span class="token punctuation">(</span><span class="token keyword">int</span> x<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">if</span><span class="token punctuation">(</span>x <span class="token operator">!=</span> fa<span class="token punctuation">[</span>x<span class="token punctuation">]</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">int</span> t <span class="token operator">=</span> fa<span class="token punctuation">[</span>x<span class="token punctuation">]</span><span class="token punctuation">;</span>        fa<span class="token punctuation">[</span>x<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">Find</span><span class="token punctuation">(</span>fa<span class="token punctuation">[</span>x<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        w<span class="token punctuation">[</span>x<span class="token punctuation">]</span> <span class="token operator">^=</span> w<span class="token punctuation">[</span>t<span class="token punctuation">]</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">return</span> fa<span class="token punctuation">[</span>x<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">bool</span> <span class="token function">Union</span><span class="token punctuation">(</span><span class="token keyword">int</span> p<span class="token punctuation">,</span> <span class="token keyword">int</span> q<span class="token punctuation">,</span> <span class="token keyword">int</span> v<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">int</span> rp <span class="token operator">=</span> <span class="token function">Find</span><span class="token punctuation">(</span>p<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">int</span> rq <span class="token operator">=</span> <span class="token function">Find</span><span class="token punctuation">(</span>q<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">if</span><span class="token punctuation">(</span>rp <span class="token operator">==</span> rq<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">return</span>  v <span class="token operator">==</span> <span class="token punctuation">(</span>w<span class="token punctuation">[</span>p<span class="token punctuation">]</span> <span class="token operator">^</span> w<span class="token punctuation">[</span>q<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">if</span><span class="token punctuation">(</span>rp <span class="token operator">==</span> n<span class="token punctuation">)</span> <span class="token function">swap</span><span class="token punctuation">(</span>rp<span class="token punctuation">,</span>rq<span class="token punctuation">)</span><span class="token punctuation">;</span>    fa<span class="token punctuation">[</span>rp<span class="token punctuation">]</span> <span class="token operator">=</span> rq<span class="token punctuation">;</span>    w<span class="token punctuation">[</span>rp<span class="token punctuation">]</span> <span class="token operator">=</span> w<span class="token punctuation">[</span>p<span class="token punctuation">]</span> <span class="token operator">^</span> w<span class="token punctuation">[</span>q<span class="token punctuation">]</span> <span class="token operator">^</span> v<span class="token punctuation">;</span>    <span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">bool</span> <span class="token function">info</span><span class="token punctuation">(</span><span class="token keyword">int</span> a<span class="token punctuation">,</span> <span class="token keyword">int</span> b<span class="token punctuation">,</span> <span class="token keyword">int</span> c<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">bool</span> rt <span class="token operator">=</span> <span class="token function">Union</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span> b<span class="token punctuation">,</span> c<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span>rt<span class="token punctuation">)</span>        <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"The first %d facts are conflicting.\n"</span><span class="token punctuation">,</span> nfacts<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">return</span> <span class="token operator">!</span>rt<span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token keyword">int</span> argc<span class="token punctuation">,</span> <span class="token keyword">char</span> <span class="token operator">*</span>argv<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">ifdef</span> <span class="token expression">ACM</span></span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"ttwo.in"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">,</span> <span class="token constant">stdin</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">endif</span> <span class="token comment">// ACM</span></span>    <span class="token keyword">int</span> ncase <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>    <span class="token keyword">while</span><span class="token punctuation">(</span><span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d %d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>n<span class="token punctuation">,</span> <span class="token operator">&amp;</span>q<span class="token punctuation">)</span><span class="token punctuation">,</span> n <span class="token operator">!=</span> <span class="token number">0</span> <span class="token operator">||</span> q <span class="token operator">!=</span> <span class="token number">0</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"Case %d:\n"</span><span class="token punctuation">,</span> ncase<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">bool</span> conflict <span class="token operator">=</span> <span class="token boolean">false</span><span class="token punctuation">;</span>        <span class="token keyword">while</span><span class="token punctuation">(</span>q<span class="token operator">--</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token keyword">char</span> tp<span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">;</span>            <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%s"</span><span class="token punctuation">,</span> tp<span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token keyword">if</span><span class="token punctuation">(</span>tp<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token char">'I'</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                nfacts<span class="token operator">++</span><span class="token punctuation">;</span>                <span class="token function">getchar</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token function">gets</span><span class="token punctuation">(</span>line<span class="token punctuation">)</span><span class="token punctuation">;</span>                <span class="token keyword">int</span> a<span class="token punctuation">,</span> b<span class="token punctuation">,</span> c<span class="token punctuation">;</span>                <span class="token keyword">int</span> rt <span class="token operator">=</span> <span class="token function">sscanf</span><span class="token punctuation">(</span>line<span class="token punctuation">,</span> <span class="token string">"%d %d %d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>a<span class="token punctuation">,</span> <span class="token operator">&amp;</span>b<span class="token punctuation">,</span> <span class="token operator">&amp;</span>c<span class="token punctuation">)</span><span class="token punctuation">;</span>                <span class="token keyword">if</span><span class="token punctuation">(</span>rt <span class="token operator">==</span> <span class="token number">2</span><span class="token punctuation">)</span>                <span class="token punctuation">{</span>                    c <span class="token operator">=</span> b<span class="token punctuation">;</span> b <span class="token operator">=</span> n<span class="token punctuation">;</span>                <span class="token punctuation">}</span>                <span class="token keyword">if</span><span class="token punctuation">(</span>conflict<span class="token punctuation">)</span> <span class="token keyword">continue</span><span class="token punctuation">;</span>                conflict <span class="token operator">=</span> <span class="token function">info</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span> b<span class="token punctuation">,</span> c<span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token punctuation">}</span>            <span class="token keyword">else</span> <span class="token keyword">if</span><span class="token punctuation">(</span>tp<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token char">'Q'</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                <span class="token keyword">int</span> k<span class="token punctuation">;</span>                <span class="token keyword">int</span> para<span class="token punctuation">;</span>                map<span class="token operator">&lt;</span><span class="token keyword">int</span><span class="token punctuation">,</span> <span class="token keyword">bool</span><span class="token operator">&gt;</span> fas<span class="token punctuation">;</span>                <span class="token keyword">bool</span> known <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>                <span class="token keyword">int</span> ans <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>                <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>k<span class="token punctuation">)</span><span class="token punctuation">;</span>                <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> k<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>                <span class="token punctuation">{</span>                    <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>para<span class="token punctuation">)</span><span class="token punctuation">;</span>                    <span class="token keyword">if</span><span class="token punctuation">(</span>conflict<span class="token punctuation">)</span> <span class="token keyword">continue</span><span class="token punctuation">;</span>                    fas<span class="token punctuation">[</span><span class="token function">Find</span><span class="token punctuation">(</span>para<span class="token punctuation">)</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token operator">!</span>fas<span class="token punctuation">[</span><span class="token function">Find</span><span class="token punctuation">(</span>para<span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">;</span>                    ans <span class="token operator">^=</span> w<span class="token punctuation">[</span>para<span class="token punctuation">]</span><span class="token punctuation">;</span>                <span class="token punctuation">}</span>                <span class="token keyword">if</span><span class="token punctuation">(</span>conflict<span class="token punctuation">)</span> <span class="token keyword">continue</span><span class="token punctuation">;</span>                <span class="token keyword">for</span><span class="token punctuation">(</span>map<span class="token operator">&lt;</span><span class="token keyword">int</span><span class="token punctuation">,</span> <span class="token keyword">bool</span><span class="token operator">&gt;</span><span class="token double-colon punctuation">::</span>iterator it <span class="token operator">=</span> fas<span class="token punctuation">.</span><span class="token function">begin</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> it <span class="token operator">!=</span> fas<span class="token punctuation">.</span><span class="token function">end</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> it<span class="token operator">++</span><span class="token punctuation">)</span>                <span class="token punctuation">{</span>                    <span class="token keyword">if</span><span class="token punctuation">(</span>it<span class="token operator">-&gt;</span>second<span class="token punctuation">)</span>                    <span class="token punctuation">{</span>                        ans <span class="token operator">^=</span> w<span class="token punctuation">[</span>it<span class="token operator">-&gt;</span>first<span class="token punctuation">]</span><span class="token punctuation">;</span>                        <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span><span class="token punctuation">(</span>known <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token function">Find</span><span class="token punctuation">(</span>it<span class="token operator">-&gt;</span>first<span class="token punctuation">)</span> <span class="token operator">==</span> n<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>                            <span class="token keyword">break</span><span class="token punctuation">;</span>                    <span class="token punctuation">}</span>                <span class="token punctuation">}</span>                <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span>known<span class="token punctuation">)</span>                <span class="token punctuation">{</span>                    <span class="token function">puts</span><span class="token punctuation">(</span><span class="token string">"I don't know."</span><span class="token punctuation">)</span><span class="token punctuation">;</span>                <span class="token punctuation">}</span>                <span class="token keyword">else</span>                <span class="token punctuation">{</span>                    <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%d\n"</span><span class="token punctuation">,</span> ans<span class="token punctuation">)</span><span class="token punctuation">;</span>                <span class="token punctuation">}</span>            <span class="token punctuation">}</span>        <span class="token punctuation">}</span>        <span class="token function">putchar</span><span class="token punctuation">(</span><span class="token char">'\n'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>BTW，做惯了USACO，发现对这种复杂的IO真心不习惯了= =，WA了何止10次啊…= =</p><p>最后的问题竟然是…Case的C忘了大写= =…</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;扩展的并查集，参考了以下两个，结合了一下，然后对Query的部分有一些改动，主要是用了map来判断出现次数的奇偶&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.cppblog.com/Yuan/archive/2010/09/02/125667.html?opt=admin&quot;&gt;http://www.cppblog.com/Yuan/archive/2010/09/02/125667.html?opt=admin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.csdn.net/acm_cxlove/article/details/8101710&quot;&gt;http://blog.csdn.net/acm_cxlove/article/details/8101710&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;eq&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;.&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;.&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;.&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_1...X_{n-1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8917em;vertical-align:-0.2083em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.07847em;&quot;&gt;X&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.07847em;&quot;&gt;X&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;mbin mtight&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.2083em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/eq&gt;，这是题中所说的未给出的&lt;eq&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.4306em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;n&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/eq&gt;个数，维护一个带权的并查集，每个点有一个权&lt;eq&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;w&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.4306em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.02691em;&quot;&gt;w&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/eq&gt;&lt;/p&gt;
&lt;p&gt;保证有&lt;code&gt;w[k] = Xk ^ Xfa[k]&lt;/code&gt;，&lt;code&gt;Xfa[k]&lt;/code&gt;表示&lt;code&gt;Xk&lt;/code&gt;的父亲。&lt;/p&gt;
&lt;p&gt;对于&lt;/p&gt;</summary>
    
    
    
    
    <category term="ACM" scheme="https://unlimited-code.works/tags/acm/"/>
    
    <category term="HDU" scheme="https://unlimited-code.works/tags/hdu/"/>
    
    <category term="Union-Find" scheme="https://unlimited-code.works/tags/union-find/"/>
    
  </entry>
  
  <entry>
    <title>USACO 2.4.1 The Tamworth Two</title>
    <link href="https://unlimited-code.works/blog/2013/02/05/usaco-2-4-1/"/>
    <id>https://unlimited-code.works/blog/2013/02/05/usaco-2-4-1/</id>
    <published>2013-02-06T04:29:00.000Z</published>
    <updated>2025-08-09T21:29:05.000Z</updated>
    
    <content type="html"><![CDATA[<p>牛和农夫按照固定的走法在10x10的地图中走，每分钟走一步，求经过几分钟相遇。永远不能相遇输出0。</p><p>纯模拟的题。</p><p>判断永远不能相遇的方法是如果遇到了一个先前的状态，那么肯定存在循环，必定不能相遇。</p><p>程序中把状态表示为牛和农夫的位置以及面向的方向，通过map判断是否遇到重复状态，因为map中不存在的键会有默认值，对于bool来说就是false。</p><p>一点点空间的优化是地图只用存一份，牛和农夫不显示在地图上，尽通过状态里的点间接表示。</p><pre class="line-numbers language-cpp" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="f843073f" class="language-cpp" data-prism-hydrate="{&quot;element&quot;:&quot;f843073f&quot;,&quot;language&quot;:&quot;cpp&quot;,&quot;code&quot;:&quot;/*\nID: xjtuacm1\nPROG: ttwo\nLANG: C++\n*/\n#include\u003ciostream\u003e\n#include<stack>\n#include<cstring>\n#include<cstdio>\n#include<queue>\n#include<algorithm>\n#include<map>\nusing namespace std;\n\nconst int N = 10;\nenum direction {NORTH, EAST, SOUTH, WEST};\n\nstruct point\n{\n    int x, y;\n    point(int xx= 0, int yy = 0) :x(xx), y(yy) {}\n    void set(int xx, int yy)\n    {\n        x = xx;\n        y = yy;\n    }\n    bool operator==(const point\u0026 pt) const\n    {\n        return x == pt.x &amp;&amp; y == pt.y;\n    }\n};\n\nstruct state\n{\n    int d[2];\n    point pt[2];\n    state() { d[0] = d[1] = NORTH; }\n\n    bool operator<(const state&amp; s) const\n    {\n        return memcmp(this, &amp;s, sizeof(state)) < 0;\n    }\n};\n\nmap<state, bool> h;\nchar pane[N][N];\n\ninline bool inRange(point pt)\n{\n    return pt.x >= 0\n            &amp;&amp; pt.x < 10\n            &amp;&amp; pt.y >= 0\n            &amp;&amp; pt.y < 10;\n}\n\nbool met(const state&amp; s)\n{\n    return s.pt[0] == s.pt[1];\n}\n\nvoid next(state&amp; s)\n{\n    point npt[2];\n\n    for(int i = 0; i!= 2; i++)\n    {\n        switch(s.d[i])\n        {\n        case NORTH:\n            npt[i].set(s.pt[i].x - 1, s.pt[i].y);\n            break;\n        case EAST:\n            npt[i].set(s.pt[i].x, s.pt[i].y + 1);\n            break;\n        case SOUTH:\n            npt[i].set(s.pt[i].x + 1, s.pt[i].y);\n            break;\n        case WEST:\n            npt[i].set(s.pt[i].x, s.pt[i].y - 1);\n            break;\n        }\n\n        if(inRange(npt[i])\n            &amp;&amp; pane[npt[i].x][npt[i].y] != \u0027*')\n        {\n            s.pt[i] = npt[i];\n        }\n        else\n        {\n            s.d[i] += 1;\n            s.d[i] %= 4;\n        }\n    }\n}\n\nint main(int argc, char *argv[])\n{\n    freopen(\&quot;ttwo.in\&quot;, \&quot;r\&quot;, stdin);\n#ifndef USACO\n    freopen(\&quot;ttwo.out\&quot;, \&quot;w\&quot;, stdout);\n#endif // USACO\n\n    state s;\n\n    for(int i = 0; i!= N; i++)\n        for(int j = 0; j!= N; j++)\n    {\n        scanf(\&quot;%c\&quot;, &amp;pane[i][j]);\n        if(pane[i][j] == '\\n')\n            scanf(\&quot;%c\&quot;, &amp;pane[i][j]);\n\n        if(pane[i][j] == 'F'\n            || pane[i][j] == 'C')\n            {\n                int t = (pane[i][j] - 'C' == 0 ? 0 : 1);\n                s.pt[t].set(i, j);\n                pane[i][j] = '.';\n            }\n    }\n\n    int minute = 0;\n    h[s] = true;\n    while(!met(s))\n    {\n        next(s);\n        if(h[s])\n        {\n            printf(\&quot;0\\n\&quot;);\n            return 0;\n        }\n\n        h[s] = true;\n        minute++;\n    }\n\n    printf(\&quot;%d\\n\&quot;, minute);\n\n    return 0;\n}&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;<span class=\&quot;token comment\&quot;>/*\nID: xjtuacm1\nPROG: ttwo\nLANG: C++\n*/</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;iostream></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;stack></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstring></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstdio></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;queue></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;algorithm></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;map></span></span>\n<span class=\&quot;token keyword\&quot;>using</span> <span class=\&quot;token keyword\&quot;>namespace</span> std<span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> N <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>10</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>enum</span> <span class=\&quot;token class-name\&quot;>direction</span> <span class=\&quot;token punctuation\&quot;>{</span>NORTH<span class=\&quot;token punctuation\&quot;>,</span> EAST<span class=\&quot;token punctuation\&quot;>,</span> SOUTH<span class=\&quot;token punctuation\&quot;>,</span> WEST<span class=\&quot;token punctuation\&quot;>}</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>struct</span> <span class=\&quot;token class-name\&quot;>point</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>int</span> x<span class=\&quot;token punctuation\&quot;>,</span> y<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>point</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> xx<span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> yy <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>:</span><span class=\&quot;token function\&quot;>x</span><span class=\&quot;token punctuation\&quot;>(</span>xx<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token function\&quot;>y</span><span class=\&quot;token punctuation\&quot;>(</span>yy<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token punctuation\&quot;>{</span><span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>set</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> xx<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> yy<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        x <span class=\&quot;token operator\&quot;>=</span> xx<span class=\&quot;token punctuation\&quot;>;</span>\n        y <span class=\&quot;token operator\&quot;>=</span> yy<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token keyword\&quot;>operator</span><span class=\&quot;token operator\&quot;>==</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>const</span> point<span class=\&quot;token operator\&quot;>&amp;amp;</span> pt<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token keyword\&quot;>const</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>return</span> x <span class=\&quot;token operator\&quot;>==</span> pt<span class=\&quot;token punctuation\&quot;>.</span>x <span class=\&quot;token operator\&quot;>&amp;amp;&amp;amp;</span> y <span class=\&quot;token operator\&quot;>==</span> pt<span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>struct</span> <span class=\&quot;token class-name\&quot;>state</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>int</span> d<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n    point pt<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>state</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token punctuation\&quot;>{</span> d<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> d<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> NORTH<span class=\&quot;token punctuation\&quot;>;</span> <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token keyword\&quot;>operator</span><span class=\&quot;token operator\&quot;>&amp;lt;</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>const</span> state<span class=\&quot;token operator\&quot;>&amp;amp;</span> s<span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token keyword\&quot;>const</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token function\&quot;>memcmp</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>this</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>s<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>sizeof</span><span class=\&quot;token punctuation\&quot;>(</span>state<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span> <span class=\&quot;token operator\&quot;>&amp;lt;</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span><span class=\&quot;token punctuation\&quot;>;</span>\n\nmap<span class=\&quot;token operator\&quot;>&amp;lt;</span>state<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>bool</span><span class=\&quot;token operator\&quot;>></span> h<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>char</span> pane<span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>N<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>inline</span> <span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token function\&quot;>inRange</span><span class=\&quot;token punctuation\&quot;>(</span>point pt<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>return</span> pt<span class=\&quot;token punctuation\&quot;>.</span>x <span class=\&quot;token operator\&quot;>>=</span> <span class=\&quot;token number\&quot;>0</span>\n            <span class=\&quot;token operator\&quot;>&amp;amp;&amp;amp;</span> pt<span class=\&quot;token punctuation\&quot;>.</span>x <span class=\&quot;token operator\&quot;>&amp;lt;</span> <span class=\&quot;token number\&quot;>10</span>\n            <span class=\&quot;token operator\&quot;>&amp;amp;&amp;amp;</span> pt<span class=\&quot;token punctuation\&quot;>.</span>y <span class=\&quot;token operator\&quot;>>=</span> <span class=\&quot;token number\&quot;>0</span>\n            <span class=\&quot;token operator\&quot;>&amp;amp;&amp;amp;</span> pt<span class=\&quot;token punctuation\&quot;>.</span>y <span class=\&quot;token operator\&quot;>&amp;lt;</span> <span class=\&quot;token number\&quot;>10</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token function\&quot;>met</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>const</span> state<span class=\&quot;token operator\&quot;>&amp;amp;</span> s<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>return</span> s<span class=\&quot;token punctuation\&quot;>.</span>pt<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> s<span class=\&quot;token punctuation\&quot;>.</span>pt<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>next</span><span class=\&quot;token punctuation\&quot;>(</span>state<span class=\&quot;token operator\&quot;>&amp;amp;</span> s<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    point npt<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>switch</span><span class=\&quot;token punctuation\&quot;>(</span>s<span class=\&quot;token punctuation\&quot;>.</span>d<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>case</span> NORTH<span class=\&quot;token operator\&quot;>:</span>\n            npt<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>set</span><span class=\&quot;token punctuation\&quot;>(</span>s<span class=\&quot;token punctuation\&quot;>.</span>pt<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>x <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> s<span class=\&quot;token punctuation\&quot;>.</span>pt<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token keyword\&quot;>break</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>case</span> EAST<span class=\&quot;token operator\&quot;>:</span>\n            npt<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>set</span><span class=\&quot;token punctuation\&quot;>(</span>s<span class=\&quot;token punctuation\&quot;>.</span>pt<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>,</span> s<span class=\&quot;token punctuation\&quot;>.</span>pt<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>y <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token keyword\&quot;>break</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>case</span> SOUTH<span class=\&quot;token operator\&quot;>:</span>\n            npt<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>set</span><span class=\&quot;token punctuation\&quot;>(</span>s<span class=\&quot;token punctuation\&quot;>.</span>pt<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>x <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>,</span> s<span class=\&quot;token punctuation\&quot;>.</span>pt<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token keyword\&quot;>break</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>case</span> WEST<span class=\&quot;token operator\&quot;>:</span>\n            npt<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>set</span><span class=\&quot;token punctuation\&quot;>(</span>s<span class=\&quot;token punctuation\&quot;>.</span>pt<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>,</span> s<span class=\&quot;token punctuation\&quot;>.</span>pt<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>y <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token keyword\&quot;>break</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>inRange</span><span class=\&quot;token punctuation\&quot;>(</span>npt<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token operator\&quot;>&amp;amp;&amp;amp;</span> pane<span class=\&quot;token punctuation\&quot;>[</span>npt<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>x<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>npt<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>y<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token char\&quot;>'*'</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            s<span class=\&quot;token punctuation\&quot;>.</span>pt<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> npt<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token keyword\&quot;>else</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            s<span class=\&quot;token punctuation\&quot;>.</span>d<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>+=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n            s<span class=\&quot;token punctuation\&quot;>.</span>d<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>%=</span> <span class=\&quot;token number\&quot;>4</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>main</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> argc<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>char</span> <span class=\&quot;token operator\&quot;>*</span>argv<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;ttwo.in\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;r\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdin</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>ifndef</span> <span class=\&quot;token expression\&quot;>USACO</span></span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;ttwo.out\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;w\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdout</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>endif</span> <span class=\&quot;token comment\&quot;>// USACO</span></span>\n\n    state s<span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> N<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> j <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>!=</span> N<span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%c\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>pane<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>pane<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token char\&quot;>'\\n'</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%c\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>pane<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>pane<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token char\&quot;>'F'</span>\n            <span class=\&quot;token operator\&quot;>||</span> pane<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token char\&quot;>'C'</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                <span class=\&quot;token keyword\&quot;>int</span> t <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token punctuation\&quot;>(</span>pane<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token char\&quot;>'C'</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token number\&quot;>0</span> <span class=\&quot;token operator\&quot;>?</span> <span class=\&quot;token number\&quot;>0</span> <span class=\&quot;token operator\&quot;>:</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                s<span class=\&quot;token punctuation\&quot;>.</span>pt<span class=\&quot;token punctuation\&quot;>[</span>t<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span><span class=\&quot;token function\&quot;>set</span><span class=\&quot;token punctuation\&quot;>(</span>i<span class=\&quot;token punctuation\&quot;>,</span> j<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n                pane<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token char\&quot;>'.'</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>int</span> minute <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n    h<span class=\&quot;token punctuation\&quot;>[</span>s<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>!</span><span class=\&quot;token function\&quot;>met</span><span class=\&quot;token punctuation\&quot;>(</span>s<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token function\&quot;>next</span><span class=\&quot;token punctuation\&quot;>(</span>s<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>h<span class=\&quot;token punctuation\&quot;>[</span>s<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token function\&quot;>printf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;0\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n\n        h<span class=\&quot;token punctuation\&quot;>[</span>s<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>;</span>\n        minute<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token function\&quot;>printf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> minute<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>&quot;,&quot;plugins&quot;:{&quot;lineNumbers&quot;:true}}"><span class="token comment">/*ID: xjtuacm1PROG: ttwoLANG: C++*/</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;iostream&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;stack&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstring&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstdio&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;queue&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;algorithm&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;map&gt;</span></span><span class="token keyword">using</span> <span class="token keyword">namespace</span> std<span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> N <span class="token operator">=</span> <span class="token number">10</span><span class="token punctuation">;</span><span class="token keyword">enum</span> <span class="token class-name">direction</span> <span class="token punctuation">{</span>NORTH<span class="token punctuation">,</span> EAST<span class="token punctuation">,</span> SOUTH<span class="token punctuation">,</span> WEST<span class="token punctuation">}</span><span class="token punctuation">;</span><span class="token keyword">struct</span> <span class="token class-name">point</span><span class="token punctuation">{</span>    <span class="token keyword">int</span> x<span class="token punctuation">,</span> y<span class="token punctuation">;</span>    <span class="token function">point</span><span class="token punctuation">(</span><span class="token keyword">int</span> xx<span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token keyword">int</span> yy <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token operator">:</span><span class="token function">x</span><span class="token punctuation">(</span>xx<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">y</span><span class="token punctuation">(</span>yy<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>    <span class="token keyword">void</span> <span class="token function">set</span><span class="token punctuation">(</span><span class="token keyword">int</span> xx<span class="token punctuation">,</span> <span class="token keyword">int</span> yy<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        x <span class="token operator">=</span> xx<span class="token punctuation">;</span>        y <span class="token operator">=</span> yy<span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">bool</span> <span class="token keyword">operator</span><span class="token operator">==</span><span class="token punctuation">(</span><span class="token keyword">const</span> point<span class="token operator">&amp;</span> pt<span class="token punctuation">)</span> <span class="token keyword">const</span>    <span class="token punctuation">{</span>        <span class="token keyword">return</span> x <span class="token operator">==</span> pt<span class="token punctuation">.</span>x <span class="token operator">&amp;&amp;</span> y <span class="token operator">==</span> pt<span class="token punctuation">.</span>y<span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">;</span><span class="token keyword">struct</span> <span class="token class-name">state</span><span class="token punctuation">{</span>    <span class="token keyword">int</span> d<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">;</span>    point pt<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">;</span>    <span class="token function">state</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> d<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">=</span> d<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">=</span> NORTH<span class="token punctuation">;</span> <span class="token punctuation">}</span>    <span class="token keyword">bool</span> <span class="token keyword">operator</span><span class="token operator">&lt;</span><span class="token punctuation">(</span><span class="token keyword">const</span> state<span class="token operator">&amp;</span> s<span class="token punctuation">)</span> <span class="token keyword">const</span>    <span class="token punctuation">{</span>        <span class="token keyword">return</span> <span class="token function">memcmp</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>s<span class="token punctuation">,</span> <span class="token keyword">sizeof</span><span class="token punctuation">(</span>state<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">&lt;</span> <span class="token number">0</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">;</span>map<span class="token operator">&lt;</span>state<span class="token punctuation">,</span> <span class="token keyword">bool</span><span class="token operator">&gt;</span> h<span class="token punctuation">;</span><span class="token keyword">char</span> pane<span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">[</span>N<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">inline</span> <span class="token keyword">bool</span> <span class="token function">inRange</span><span class="token punctuation">(</span>point pt<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">return</span> pt<span class="token punctuation">.</span>x <span class="token operator">&gt;=</span> <span class="token number">0</span>            <span class="token operator">&amp;&amp;</span> pt<span class="token punctuation">.</span>x <span class="token operator">&lt;</span> <span class="token number">10</span>            <span class="token operator">&amp;&amp;</span> pt<span class="token punctuation">.</span>y <span class="token operator">&gt;=</span> <span class="token number">0</span>            <span class="token operator">&amp;&amp;</span> pt<span class="token punctuation">.</span>y <span class="token operator">&lt;</span> <span class="token number">10</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">bool</span> <span class="token function">met</span><span class="token punctuation">(</span><span class="token keyword">const</span> state<span class="token operator">&amp;</span> s<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">return</span> s<span class="token punctuation">.</span>pt<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> s<span class="token punctuation">.</span>pt<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">void</span> <span class="token function">next</span><span class="token punctuation">(</span>state<span class="token operator">&amp;</span> s<span class="token punctuation">)</span><span class="token punctuation">{</span>    point npt<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> <span class="token number">2</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">switch</span><span class="token punctuation">(</span>s<span class="token punctuation">.</span>d<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>        <span class="token keyword">case</span> NORTH<span class="token operator">:</span>            npt<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span>s<span class="token punctuation">.</span>pt<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>x <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">,</span> s<span class="token punctuation">.</span>pt<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>y<span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token keyword">break</span><span class="token punctuation">;</span>        <span class="token keyword">case</span> EAST<span class="token operator">:</span>            npt<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span>s<span class="token punctuation">.</span>pt<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>x<span class="token punctuation">,</span> s<span class="token punctuation">.</span>pt<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>y <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token keyword">break</span><span class="token punctuation">;</span>        <span class="token keyword">case</span> SOUTH<span class="token operator">:</span>            npt<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span>s<span class="token punctuation">.</span>pt<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>x <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">,</span> s<span class="token punctuation">.</span>pt<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>y<span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token keyword">break</span><span class="token punctuation">;</span>        <span class="token keyword">case</span> WEST<span class="token operator">:</span>            npt<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span>s<span class="token punctuation">.</span>pt<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>x<span class="token punctuation">,</span> s<span class="token punctuation">.</span>pt<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>y <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token keyword">break</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">inRange</span><span class="token punctuation">(</span>npt<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span>            <span class="token operator">&amp;&amp;</span> pane<span class="token punctuation">[</span>npt<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>x<span class="token punctuation">]</span><span class="token punctuation">[</span>npt<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>y<span class="token punctuation">]</span> <span class="token operator">!=</span> <span class="token char">'*'</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            s<span class="token punctuation">.</span>pt<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> npt<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        <span class="token keyword">else</span>        <span class="token punctuation">{</span>            s<span class="token punctuation">.</span>d<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">+=</span> <span class="token number">1</span><span class="token punctuation">;</span>            s<span class="token punctuation">.</span>d<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">%=</span> <span class="token number">4</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token keyword">int</span> argc<span class="token punctuation">,</span> <span class="token keyword">char</span> <span class="token operator">*</span>argv<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"ttwo.in"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">,</span> <span class="token constant">stdin</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">ifndef</span> <span class="token expression">USACO</span></span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"ttwo.out"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">,</span> <span class="token constant">stdout</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">endif</span> <span class="token comment">// USACO</span></span>    state s<span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> N<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> j<span class="token operator">!=</span> N<span class="token punctuation">;</span> j<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%c"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>pane<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>pane<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token char">'\n'</span><span class="token punctuation">)</span>            <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%c"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>pane<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>pane<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token char">'F'</span>            <span class="token operator">||</span> pane<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token char">'C'</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                <span class="token keyword">int</span> t <span class="token operator">=</span> <span class="token punctuation">(</span>pane<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">-</span> <span class="token char">'C'</span> <span class="token operator">==</span> <span class="token number">0</span> <span class="token operator">?</span> <span class="token number">0</span> <span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>                s<span class="token punctuation">.</span>pt<span class="token punctuation">[</span>t<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span>i<span class="token punctuation">,</span> j<span class="token punctuation">)</span><span class="token punctuation">;</span>                pane<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token char">'.'</span><span class="token punctuation">;</span>            <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token keyword">int</span> minute <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>    h<span class="token punctuation">[</span>s<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>    <span class="token keyword">while</span><span class="token punctuation">(</span><span class="token operator">!</span><span class="token function">met</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token function">next</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>h<span class="token punctuation">[</span>s<span class="token punctuation">]</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"0\n"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        h<span class="token punctuation">[</span>s<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>        minute<span class="token operator">++</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%d\n"</span><span class="token punctuation">,</span> minute<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>BTW，纯模拟真心考验细心程度= =。。。。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;牛和农夫按照固定的走法在10x10的地图中走，每分钟走一步，求经过几分钟相遇。永远不能相遇输出0。&lt;/p&gt;
&lt;p&gt;纯模拟的题。&lt;/p&gt;
&lt;p&gt;判断永远不能相遇的方法是如果遇到了一个先前的状态，那么肯定存在循环，必定不能相遇。&lt;/p&gt;
&lt;p&gt;程序中把状态表示为牛和农夫的位置以及面向的方向，通过map判断是否遇到重复状态，因为map中不存在的键会有默认值，对于bool来说就是false。&lt;/p&gt;
&lt;p&gt;一点点空间的优化是地图只用存一份，牛和农夫不显示在地图上，尽通过状态里的点间接表示。&lt;/p&gt;</summary>
    
    
    
    
    <category term="ACM" scheme="https://unlimited-code.works/tags/acm/"/>
    
    <category term="USACO" scheme="https://unlimited-code.works/tags/usaco/"/>
    
  </entry>
  
  <entry>
    <title>USACO 2.3.5 Controlling Companies</title>
    <link href="https://unlimited-code.works/blog/2013/02/05/usaco-2-3-5/"/>
    <id>https://unlimited-code.works/blog/2013/02/05/usaco-2-3-5/</id>
    <published>2013-02-06T00:36:00.000Z</published>
    <updated>2025-08-09T21:29:05.000Z</updated>
    
    <content type="html"><![CDATA[<p>恩，暴力解决。</p><p>参考了 <code>http://haipeng31.blog.163.com/blog/static/105623344201011984618863/</code>，不过很可惜原始文章已经不在了。</p><p>主要是changed变量的使用。</p><pre class="line-numbers language-cpp" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="e052293e" class="language-cpp" data-prism-hydrate="{&quot;element&quot;:&quot;e052293e&quot;,&quot;language&quot;:&quot;cpp&quot;,&quot;code&quot;:&quot;/*\nID: xjtuacm1\nPROG: concom\nLANG: C++\n*/\n#include\u003ciostream\u003e\n#include<stack>\n#include<cstring>\n#include<cstdio>\n#include<queue>\n#include<algorithm>\nusing namespace std;\n\nconst int CMAX = 100 + 1;\n\nint comp[CMAX][CMAX];\nbool owns[CMAX][CMAX];\n\nint main(int argc, char *argv[])\n{\n    freopen(\&quot;concom.in\&quot;, \&quot;r\&quot;, stdin);\n#ifndef USACO\n    freopen(\&quot;concom.out\&quot;, \&quot;w\&quot;, stdout);\n#endif // USACO\n\n    memset(comp, 0, sizeof(comp));\n    memset(owns, false, sizeof(owns));\n\n    int n;\n    scanf(\&quot;%d\&quot;, \u0026n);\n    while(n--)\n    {\n        int i, j;\n        scanf(\&quot;%d %d\&quot;, &amp;i, &amp;j);\n        scanf(\&quot;%d\&quot;, &amp;comp[i][j]);\n    }\n\n    for(int i = 0; i!= CMAX; i++)\n        owns[i][i] = true; // First condition\n\n    for(int i = 0; i!= CMAX; i++)\n        for(int j = 0; j!= true; j++)\n            owns[i][j] = (comp[i][j] >= 50); // Second condition. This can be merged with third condition.\n\n    bool changed = true;\n    while(changed)\n    {\n        changed = false;\n        for(int i = 1; i!= CMAX; i++)\n        {\n            for(int j = 1; j!= CMAX; j++)\n            {\n                if(!owns[i][j])\n                {\n                    int sum = 0;\n                    for(int k = 1; k!= CMAX; k++)\n                    {\n                        if(owns[i][k])\n                            sum += comp[k][j];\n                    }\n\n                    if(sum >= 50)\n                    {\n                        owns[i][j] = true;\n                        changed = true;\n                    }\n                }\n            }\n        }\n    }\n\n    for(int i = 1; i!= CMAX; i++)\n    {\n        for(int j = 1; j!= CMAX; j++)\n        {\n            if(owns[i][j] &amp;&amp; i!= j)\n                printf(\&quot;%d %d\\n\&quot;, i, j);\n        }\n    }\n\n    return 0;\n}&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;<span class=\&quot;token comment\&quot;>/*\nID: xjtuacm1\nPROG: concom\nLANG: C++\n*/</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;iostream></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;stack></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstring></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstdio></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;queue></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;algorithm></span></span>\n<span class=\&quot;token keyword\&quot;>using</span> <span class=\&quot;token keyword\&quot;>namespace</span> std<span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> CMAX <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>100</span> <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> comp<span class=\&quot;token punctuation\&quot;>[</span>CMAX<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>CMAX<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>bool</span> owns<span class=\&quot;token punctuation\&quot;>[</span>CMAX<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>CMAX<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>main</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> argc<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>char</span> <span class=\&quot;token operator\&quot;>*</span>argv<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;concom.in\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;r\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdin</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>ifndef</span> <span class=\&quot;token expression\&quot;>USACO</span></span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;concom.out\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;w\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdout</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>endif</span> <span class=\&quot;token comment\&quot;>// USACO</span></span>\n\n    <span class=\&quot;token function\&quot;>memset</span><span class=\&quot;token punctuation\&quot;>(</span>comp<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>sizeof</span><span class=\&quot;token punctuation\&quot;>(</span>comp<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>memset</span><span class=\&quot;token punctuation\&quot;>(</span>owns<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token boolean\&quot;>false</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>sizeof</span><span class=\&quot;token punctuation\&quot;>(</span>owns<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>int</span> n<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>n<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span>n<span class=\&quot;token operator\&quot;>--</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>int</span> i<span class=\&quot;token punctuation\&quot;>,</span> j<span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d %d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>i<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>j<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token operator\&quot;>&amp;amp;</span>comp<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> CMAX<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        owns<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>;</span> <span class=\&quot;token comment\&quot;>// First condition</span>\n\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> CMAX<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> j <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n            owns<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token punctuation\&quot;>(</span>comp<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>>=</span> <span class=\&quot;token number\&quot;>50</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span> <span class=\&quot;token comment\&quot;>// Second condition. This can be merged with third condition.</span>\n\n    <span class=\&quot;token keyword\&quot;>bool</span> changed <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span>changed<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        changed <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token boolean\&quot;>false</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> CMAX<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> j <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>!=</span> CMAX<span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>!</span>owns<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token punctuation\&quot;>{</span>\n                    <span class=\&quot;token keyword\&quot;>int</span> sum <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n                    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> k <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> k<span class=\&quot;token operator\&quot;>!=</span> CMAX<span class=\&quot;token punctuation\&quot;>;</span> k<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n                    <span class=\&quot;token punctuation\&quot;>{</span>\n                        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>owns<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>k<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n                            sum <span class=\&quot;token operator\&quot;>+=</span> comp<span class=\&quot;token punctuation\&quot;>[</span>k<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n                    <span class=\&quot;token punctuation\&quot;>}</span>\n\n                    <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>sum <span class=\&quot;token operator\&quot;>>=</span> <span class=\&quot;token number\&quot;>50</span><span class=\&quot;token punctuation\&quot;>)</span>\n                    <span class=\&quot;token punctuation\&quot;>{</span>\n                        owns<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>;</span>\n                        changed <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>;</span>\n                    <span class=\&quot;token punctuation\&quot;>}</span>\n                <span class=\&quot;token punctuation\&quot;>}</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> CMAX<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> j <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>!=</span> CMAX<span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>owns<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>[</span>j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>&amp;amp;&amp;amp;</span> i<span class=\&quot;token operator\&quot;>!=</span> j<span class=\&quot;token punctuation\&quot;>)</span>\n                <span class=\&quot;token function\&quot;>printf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d %d\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> i<span class=\&quot;token punctuation\&quot;>,</span> j<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>&quot;,&quot;plugins&quot;:{&quot;lineNumbers&quot;:true}}"><span class="token comment">/*ID: xjtuacm1PROG: concomLANG: C++*/</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;iostream&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;stack&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstring&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstdio&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;queue&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;algorithm&gt;</span></span><span class="token keyword">using</span> <span class="token keyword">namespace</span> std<span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> CMAX <span class="token operator">=</span> <span class="token number">100</span> <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span><span class="token keyword">int</span> comp<span class="token punctuation">[</span>CMAX<span class="token punctuation">]</span><span class="token punctuation">[</span>CMAX<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">bool</span> owns<span class="token punctuation">[</span>CMAX<span class="token punctuation">]</span><span class="token punctuation">[</span>CMAX<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token keyword">int</span> argc<span class="token punctuation">,</span> <span class="token keyword">char</span> <span class="token operator">*</span>argv<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"concom.in"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">,</span> <span class="token constant">stdin</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">ifndef</span> <span class="token expression">USACO</span></span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"concom.out"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">,</span> <span class="token constant">stdout</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">endif</span> <span class="token comment">// USACO</span></span>    <span class="token function">memset</span><span class="token punctuation">(</span>comp<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token keyword">sizeof</span><span class="token punctuation">(</span>comp<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token function">memset</span><span class="token punctuation">(</span>owns<span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token keyword">sizeof</span><span class="token punctuation">(</span>owns<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">int</span> n<span class="token punctuation">;</span>    <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>n<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">while</span><span class="token punctuation">(</span>n<span class="token operator">--</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">int</span> i<span class="token punctuation">,</span> j<span class="token punctuation">;</span>        <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d %d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>i<span class="token punctuation">,</span> <span class="token operator">&amp;</span>j<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%d"</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>comp<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> CMAX<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        owns<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span> <span class="token comment">// First condition</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> CMAX<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> j<span class="token operator">!=</span> <span class="token boolean">true</span><span class="token punctuation">;</span> j<span class="token operator">++</span><span class="token punctuation">)</span>            owns<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">(</span>comp<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">&gt;=</span> <span class="token number">50</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Second condition. This can be merged with third condition.</span>    <span class="token keyword">bool</span> changed <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>    <span class="token keyword">while</span><span class="token punctuation">(</span>changed<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        changed <span class="token operator">=</span> <span class="token boolean">false</span><span class="token punctuation">;</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> CMAX<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> j<span class="token operator">!=</span> CMAX<span class="token punctuation">;</span> j<span class="token operator">++</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span>owns<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">)</span>                <span class="token punctuation">{</span>                    <span class="token keyword">int</span> sum <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>                    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> k <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> k<span class="token operator">!=</span> CMAX<span class="token punctuation">;</span> k<span class="token operator">++</span><span class="token punctuation">)</span>                    <span class="token punctuation">{</span>                        <span class="token keyword">if</span><span class="token punctuation">(</span>owns<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>k<span class="token punctuation">]</span><span class="token punctuation">)</span>                            sum <span class="token operator">+=</span> comp<span class="token punctuation">[</span>k<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">;</span>                    <span class="token punctuation">}</span>                    <span class="token keyword">if</span><span class="token punctuation">(</span>sum <span class="token operator">&gt;=</span> <span class="token number">50</span><span class="token punctuation">)</span>                    <span class="token punctuation">{</span>                        owns<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>                        changed <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>                    <span class="token punctuation">}</span>                <span class="token punctuation">}</span>            <span class="token punctuation">}</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> CMAX<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> j<span class="token operator">!=</span> CMAX<span class="token punctuation">;</span> j<span class="token operator">++</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token keyword">if</span><span class="token punctuation">(</span>owns<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">[</span>j<span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> i<span class="token operator">!=</span> j<span class="token punctuation">)</span>                <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%d %d\n"</span><span class="token punctuation">,</span> i<span class="token punctuation">,</span> j<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>BTW，发现现在碰到暴力的题都有点儿不敢做了。。= =</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;恩，暴力解决。&lt;/p&gt;
&lt;p&gt;参考了 &lt;code&gt;http://haipeng31.blog.163.com/blog/static/105623344201011984618863/&lt;/code&gt;，不过很可惜原始文章已经不在了。&lt;/p&gt;
&lt;p&gt;主要是changed变量的使用。&lt;/p&gt;
&lt;pre class=&quot;line-numbers language-cpp&quot; style=&quot;max-height: 30em&quot; data-prismjs-copy-timeout=&quot;500&quot; tabindex=&quot;0&quot;&gt;&lt;code id=&quot;e052293e&quot; class=&quot;language-cpp&quot; data-prism-hydrate=&quot;{&amp;quot;element&amp;quot;:&amp;quot;e052293e&amp;quot;,&amp;quot;language&amp;quot;:&amp;quot;cpp&amp;quot;,&amp;quot;code&amp;quot;:&amp;quot;/*&#92;nID: xjtuacm1&#92;nPROG: concom&#92;nLANG: C++&#92;n*/&#92;n#include&#92;u003ciostream&#92;u003e&#92;n#include&lt;stack&gt;&#92;n#include&lt;cstring&gt;&#92;n#include&lt;cstdio&gt;&#92;n#include&lt;queue&gt;&#92;n#include&lt;algorithm&gt;&#92;nusing namespace std;&#92;n&#92;nconst int CMAX = 100 + 1;&#92;n&#92;nint comp[CMAX][CMAX];&#92;nbool owns[CMAX][CMAX];&#92;n&#92;nint main(int argc, char *argv[])&#92;n{&#92;n    freopen(&#92;&amp;quot;concom.in&#92;&amp;quot;, &#92;&amp;quot;r&#92;&amp;quot;, stdin);&#92;n#ifndef USACO&#92;n    freopen(&#92;&amp;quot;concom.out&#92;&amp;quot;, &#92;&amp;quot;w&#92;&amp;quot;, stdout);&#92;n#endif // USACO&#92;n&#92;n    memset(comp, 0, sizeof(comp));&#92;n    memset(owns, false, sizeof(owns));&#92;n&#92;n    int n;&#92;n    scanf(&#92;&amp;quot;%d&#92;&amp;quot;, &#92;u0026n);&#92;n    while(n--)&#92;n    {&#92;n        int i, j;&#92;n        scanf(&#92;&amp;quot;%d %d&#92;&amp;quot;, &amp;amp;i, &amp;amp;j);&#92;n        scanf(&#92;&amp;quot;%d&#92;&amp;quot;, &amp;amp;comp[i][j]);&#92;n    }&#92;n&#92;n    for(int i = 0; i!= CMAX; i++)&#92;n        owns[i][i] = true; // First condition&#92;n&#92;n    for(int i = 0; i!= CMAX; i++)&#92;n        for(int j = 0; j!= true; j++)&#92;n            owns[i][j] = (comp[i][j] &gt;= 50); // Second condition. This can be merged with third condition.&#92;n&#92;n    bool changed = true;&#92;n    while(changed)&#92;n    {&#92;n        changed = false;&#92;n        for(int i = 1; i!= CMAX; i++)&#92;n        {&#92;n            for(int j = 1; j!= CMAX; j++)&#92;n            {&#92;n                if(!owns[i][j])&#92;n                {&#92;n                    int sum = 0;&#92;n                    for(int k = 1; k!= CMAX; k++)&#92;n                    {&#92;n                        if(owns[i][k])&#92;n                            sum += comp[k][j];&#92;n                    }&#92;n&#92;n                    if(sum &gt;= 50)&#92;n                    {&#92;n                        owns[i][j] = true;&#92;n                        changed = true;&#92;n                    }&#92;n                }&#92;n            }&#92;n        }&#92;n    }&#92;n&#92;n    for(int i = 1; i!= CMAX; i++)&#92;n    {&#92;n        for(int j = 1; j!= CMAX; j++)&#92;n        {&#92;n            if(owns[i][j] &amp;amp;&amp;amp; i!= j)&#92;n                printf(&#92;&amp;quot;%d %d&#92;&#92;n&#92;&amp;quot;, i, j);&#92;n        }&#92;n    }&#92;n&#92;n    return 0;&#92;n}&amp;quot;,&amp;quot;settings&amp;quot;:{},&amp;quot;vars&amp;quot;:{&amp;quot;command-line&amp;quot;:{&amp;quot;complete&amp;quot;:true}},&amp;quot;highlightedCode&amp;quot;:&amp;quot;&lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;/*&#92;nID: xjtuacm1&#92;nPROG: concom&#92;nLANG: C++&#92;n*/&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;iostream&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;stack&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cstring&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cstdio&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;queue&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;algorithm&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;using&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;namespace&lt;/span&gt; std&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; CMAX &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;100&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; comp&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;CMAX&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;CMAX&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;bool&lt;/span&gt; owns&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;CMAX&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;CMAX&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;main&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; argc&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;argv&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;concom.in&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;r&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdin&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;ifndef&lt;/span&gt; &lt;span class=&#92;&amp;quot;token expression&#92;&amp;quot;&gt;USACO&lt;/span&gt;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;concom.out&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;w&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdout&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;endif&lt;/span&gt; &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// USACO&lt;/span&gt;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;memset&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;comp&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;sizeof&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;comp&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;memset&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;owns&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;false&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;sizeof&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;owns&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;scanf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;while&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;n&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;--&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;scanf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d %d&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;scanf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&lt;/span&gt;comp&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; CMAX&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        owns&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;true&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// First condition&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; CMAX&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;true&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            owns&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;comp&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;50&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// Second condition. This can be merged with third condition.&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;bool&lt;/span&gt; changed &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;true&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;while&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;changed&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        changed &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;false&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; CMAX&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; CMAX&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!&lt;/span&gt;owns&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; sum &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; k &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; k&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; CMAX&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; k&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;owns&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;k&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                            sum &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+=&lt;/span&gt; comp&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;k&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n                    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;sum &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;50&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                        owns&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;true&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                        changed &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;true&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n                    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; CMAX&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; CMAX&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;owns&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&amp;amp;amp;&amp;amp;amp;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;printf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d %d&#92;&#92;n&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&amp;quot;,&amp;quot;plugins&amp;quot;:{&amp;quot;lineNumbers&amp;quot;:true}}&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/*
ID: xjtuacm1
PROG: concom
LANG: C++
*/&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;stack&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cstring&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cstdio&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;queue&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;algorithm&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;namespace&lt;/span&gt; std&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; CMAX &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; comp&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;CMAX&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;CMAX&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;bool&lt;/span&gt; owns&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;CMAX&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;CMAX&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; argc&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;argv&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;concom.in&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifndef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;USACO&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;concom.out&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;w&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdout&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// USACO&lt;/span&gt;&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;memset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;comp&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;comp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;memset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;owns&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;owns&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d %d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;comp&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; CMAX&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        owns&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// First condition&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; CMAX&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            owns&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;comp&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Second condition. This can be merged with third condition.&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;bool&lt;/span&gt; changed &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;changed&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        changed &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; CMAX&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; CMAX&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;owns&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; sum &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; k &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; k&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; CMAX&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; k&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;owns&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                            sum &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; comp&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

                    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sum &lt;span class=&quot;token operator&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                        owns&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                        changed &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; CMAX&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; CMAX&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;owns&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; j&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d %d&#92;n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;BTW，发现现在碰到暴力的题都有点儿不敢做了。。= =&lt;/p&gt;</summary>
    
    
    
    
    <category term="ACM" scheme="https://unlimited-code.works/tags/acm/"/>
    
    <category term="USACO" scheme="https://unlimited-code.works/tags/usaco/"/>
    
  </entry>
  
  <entry>
    <title>USACO 2.3.1 Longest Prefix</title>
    <link href="https://unlimited-code.works/blog/2013/02/05/usaco-2-3-1/"/>
    <id>https://unlimited-code.works/blog/2013/02/05/usaco-2-3-1/</id>
    <published>2013-02-05T22:44:00.000Z</published>
    <updated>2025-08-09T21:29:05.000Z</updated>
    
    <content type="html"><![CDATA[<p>题目意思就是给定1～200个短的Primitive (长度1～10)，以及一个长字符串 (长度200,000以内)，需要找出由这些Primitive任意重复连接形成的后者的最长前缀。</p><p>DP + Trie</p><p>设长字符串为seq，基本思路是若seq[0…i]是满足要求的前缀，那么seq[0…i+len]也是满足要求的前缀，len是各个Primitive的长度。</p><p>然后就是用Trie优化一下判断seq[i…i+len]是否在Primitive集合的过程。</p><pre class="line-numbers language-cpp" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="cbb0b63d" class="language-cpp" data-prism-hydrate="{&quot;element&quot;:&quot;cbb0b63d&quot;,&quot;language&quot;:&quot;cpp&quot;,&quot;code&quot;:&quot;/*\nID: xjtuacm1\nPROG: prefix\nLANG: C++\n*/\n#include\u003ciostream\u003e\n#include<stack>\n#include<cstring>\n#include<cstdio>\n#include<queue>\n#include<algorithm>\n#include<map>\n#include<set>\nusing namespace std;\n\nconst int PRISIZE = 205;\nconst int PRILEN = 10 + 1;\nconst int SEQLEN = 200005;\nconst int LINELEN = 76 + 2;\n\nstruct _trie\n{\n    int next[26];\n    int cnt;\n} trie[PRISIZE * PRILEN];\nint trieNodeCnt;\n\nint trieInit()\n{\n    memset(trie, 0, sizeof(trie));\n    trieNodeCnt = 1;\n\n    return 0; // trie tree\u0027s root\n}\n\nvoid trieAdd(int root, const char *str)\n{\n    int p = root;\n    while(*str)\n    {\n        if(trie[p].next[*str - 'A'] == 0)\n        {\n            trie[p].next[*str - 'A'] = trieNodeCnt++;\n        }\n        p = trie[p].next[*str - 'A'];\n        str++;\n    }\n    trie[p].cnt += 1;\n}\n\nbool trieSearch(int root, const char* str, int len)\n{\n    int p = root;\n    for(int i = 0; i!= len; i++)\n    {\n        if(trie[p].next[str[i] - 'A'] == 0)\n            return false;\n\n        p = trie[p].next[str[i] - 'A'];\n    }\n\n    return trie[p].cnt > 0;\n}\n\nchar seq[SEQLEN];\nint seqlen = 0;\nbool reach[SEQLEN]; // reach[i] =  if seq[0...i) (length = i) can be composed from primitives.\n\nint main(int argc, char *argv[])\n{\n    freopen(\&quot;prefix.in\&quot;, \&quot;r\&quot;, stdin);\n#ifndef USACO\n    freopen(\&quot;prefix.out\&quot;, \&quot;w\&quot;, stdout);\n#endif // USACO\n\n    int root = trieInit(); // root = 0\n    memset(reach, false, sizeof(reach));\n\n    char temp[PRILEN];\n    for(int i = 0; i!= PRISIZE; i++)\n    {\n        scanf(\&quot;%s\&quot;, temp);\n        if(temp[0] == '.')\n            break;\n\n        trieAdd(root, temp);\n    }\n\n    while(true)\n    {\n        scanf(\&quot;%s\&quot;, seq + seqlen);\n        int len = strlen(seq + seqlen);\n        if(len == 0)\n            break;\n\n        seqlen += len;\n    }\n\n    for(int i = 1; i!= PRILEN; i++)\n    {\n        reach[i] = trieSearch(root, seq, i);\n    }\n\n    for(int i = 0; i!= seqlen; i++)\n    {\n        if(reach[i])\n        {\n            for(int j = 1; j!= PRILEN; j++)\n            {\n                if(trieSearch(root, seq + i, j))\n                    reach[i + j] = true;\n            }\n        }\n    }\n\n    for(int i = seqlen ; i != 0; i--)\n    {\n        if(reach[i])\n        {\n            printf(\&quot;%d\\n\&quot;, i);\n            return 0;\n        }\n    }\n\n    printf(\&quot;0\\n\&quot;);\n    return 0;\n}&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;<span class=\&quot;token comment\&quot;>/*\nID: xjtuacm1\nPROG: prefix\nLANG: C++\n*/</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>\u0026lt;iostream></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;stack></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstring></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;cstdio></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;queue></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;algorithm></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;map></span></span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span><span class=\&quot;token string\&quot;>&amp;lt;set></span></span>\n<span class=\&quot;token keyword\&quot;>using</span> <span class=\&quot;token keyword\&quot;>namespace</span> std<span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> PRISIZE <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>205</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> PRILEN <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>10</span> <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> SEQLEN <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>200005</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>int</span> LINELEN <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>76</span> <span class=\&quot;token operator\&quot;>+</span> <span class=\&quot;token number\&quot;>2</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>struct</span> <span class=\&quot;token class-name\&quot;>_trie</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>int</span> next<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>26</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>int</span> cnt<span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span> trie<span class=\&quot;token punctuation\&quot;>[</span>PRISIZE <span class=\&quot;token operator\&quot;>*</span> PRILEN<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> trieNodeCnt<span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>trieInit</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token function\&quot;>memset</span><span class=\&quot;token punctuation\&quot;>(</span>trie<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>sizeof</span><span class=\&quot;token punctuation\&quot;>(</span>trie<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    trieNodeCnt <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> <span class=\&quot;token comment\&quot;>// trie tree's root</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>void</span> <span class=\&quot;token function\&quot;>trieAdd</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> root<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>char</span> <span class=\&quot;token operator\&quot;>*</span>str<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>int</span> p <span class=\&quot;token operator\&quot;>=</span> root<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token operator\&quot;>*</span>str<span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>trie<span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>next<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token operator\&quot;>*</span>str <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token char\&quot;>'A'</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            trie<span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>next<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token operator\&quot;>*</span>str <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token char\&quot;>'A'</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> trieNodeCnt<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n        p <span class=\&quot;token operator\&quot;>=</span> trie<span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>next<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token operator\&quot;>*</span>str <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token char\&quot;>'A'</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n        str<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n    trie<span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>cnt <span class=\&quot;token operator\&quot;>+=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>bool</span> <span class=\&quot;token function\&quot;>trieSearch</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> root<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>const</span> <span class=\&quot;token keyword\&quot;>char</span><span class=\&quot;token operator\&quot;>*</span> str<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>int</span> len<span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token keyword\&quot;>int</span> p <span class=\&quot;token operator\&quot;>=</span> root<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> len<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>trie<span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>next<span class=\&quot;token punctuation\&quot;>[</span>str<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token char\&quot;>'A'</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token boolean\&quot;>false</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n        p <span class=\&quot;token operator\&quot;>=</span> trie<span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>next<span class=\&quot;token punctuation\&quot;>[</span>str<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>-</span> <span class=\&quot;token char\&quot;>'A'</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>return</span> trie<span class=\&quot;token punctuation\&quot;>[</span>p<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>.</span>cnt <span class=\&quot;token operator\&quot;>></span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>\n\n<span class=\&quot;token keyword\&quot;>char</span> seq<span class=\&quot;token punctuation\&quot;>[</span>SEQLEN<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>int</span> seqlen <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token keyword\&quot;>bool</span> reach<span class=\&quot;token punctuation\&quot;>[</span>SEQLEN<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span> <span class=\&quot;token comment\&quot;>// reach[i] =  if seq[0...i) (length = i) can be composed from primitives.</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>main</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> argc<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>char</span> <span class=\&quot;token operator\&quot;>*</span>argv<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;prefix.in\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;r\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdin</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>ifndef</span> <span class=\&quot;token expression\&quot;>USACO</span></span>\n    <span class=\&quot;token function\&quot;>freopen</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;prefix.out\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token string\&quot;>\&quot;w\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token constant\&quot;>stdout</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>endif</span> <span class=\&quot;token comment\&quot;>// USACO</span></span>\n\n    <span class=\&quot;token keyword\&quot;>int</span> root <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>trieInit</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span> <span class=\&quot;token comment\&quot;>// root = 0</span>\n    <span class=\&quot;token function\&quot;>memset</span><span class=\&quot;token punctuation\&quot;>(</span>reach<span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token boolean\&quot;>false</span><span class=\&quot;token punctuation\&quot;>,</span> <span class=\&quot;token keyword\&quot;>sizeof</span><span class=\&quot;token punctuation\&quot;>(</span>reach<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n    <span class=\&quot;token keyword\&quot;>char</span> temp<span class=\&quot;token punctuation\&quot;>[</span>PRILEN<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> PRISIZE<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%s\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> temp<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>temp<span class=\&quot;token punctuation\&quot;>[</span><span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token char\&quot;>'.'</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token keyword\&quot;>break</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n        <span class=\&quot;token function\&quot;>trieAdd</span><span class=\&quot;token punctuation\&quot;>(</span>root<span class=\&quot;token punctuation\&quot;>,</span> temp<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>while</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token function\&quot;>scanf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%s\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> seq <span class=\&quot;token operator\&quot;>+</span> seqlen<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>int</span> len <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>strlen</span><span class=\&quot;token punctuation\&quot;>(</span>seq <span class=\&quot;token operator\&quot;>+</span> seqlen<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>len <span class=\&quot;token operator\&quot;>==</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token keyword\&quot;>break</span><span class=\&quot;token punctuation\&quot;>;</span>\n\n        seqlen <span class=\&quot;token operator\&quot;>+=</span> len<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> PRILEN<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        reach<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token function\&quot;>trieSearch</span><span class=\&quot;token punctuation\&quot;>(</span>root<span class=\&quot;token punctuation\&quot;>,</span> seq<span class=\&quot;token punctuation\&quot;>,</span> i<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>!=</span> seqlen<span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>reach<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> j <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token number\&quot;>1</span><span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>!=</span> PRILEN<span class=\&quot;token punctuation\&quot;>;</span> j<span class=\&quot;token operator\&quot;>++</span><span class=\&quot;token punctuation\&quot;>)</span>\n            <span class=\&quot;token punctuation\&quot;>{</span>\n                <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token function\&quot;>trieSearch</span><span class=\&quot;token punctuation\&quot;>(</span>root<span class=\&quot;token punctuation\&quot;>,</span> seq <span class=\&quot;token operator\&quot;>+</span> i<span class=\&quot;token punctuation\&quot;>,</span> j<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>)</span>\n                    reach<span class=\&quot;token punctuation\&quot;>[</span>i <span class=\&quot;token operator\&quot;>+</span> j<span class=\&quot;token punctuation\&quot;>]</span> <span class=\&quot;token operator\&quot;>=</span> <span class=\&quot;token boolean\&quot;>true</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token punctuation\&quot;>}</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token keyword\&quot;>for</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token keyword\&quot;>int</span> i <span class=\&quot;token operator\&quot;>=</span> seqlen <span class=\&quot;token punctuation\&quot;>;</span> i <span class=\&quot;token operator\&quot;>!=</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span> i<span class=\&quot;token operator\&quot;>--</span><span class=\&quot;token punctuation\&quot;>)</span>\n    <span class=\&quot;token punctuation\&quot;>{</span>\n        <span class=\&quot;token keyword\&quot;>if</span><span class=\&quot;token punctuation\&quot;>(</span>reach<span class=\&quot;token punctuation\&quot;>[</span>i<span class=\&quot;token punctuation\&quot;>]</span><span class=\&quot;token punctuation\&quot;>)</span>\n        <span class=\&quot;token punctuation\&quot;>{</span>\n            <span class=\&quot;token function\&quot;>printf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;%d\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>,</span> i<span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n            <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n        <span class=\&quot;token punctuation\&quot;>}</span>\n    <span class=\&quot;token punctuation\&quot;>}</span>\n\n    <span class=\&quot;token function\&quot;>printf</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token string\&quot;>\&quot;0\\n\&quot;</span><span class=\&quot;token punctuation\&quot;>)</span><span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>&quot;,&quot;plugins&quot;:{&quot;lineNumbers&quot;:true}}"><span class="token comment">/*ID: xjtuacm1PROG: prefixLANG: C++*/</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;iostream&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;stack&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstring&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstdio&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;queue&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;algorithm&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;map&gt;</span></span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;set&gt;</span></span><span class="token keyword">using</span> <span class="token keyword">namespace</span> std<span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> PRISIZE <span class="token operator">=</span> <span class="token number">205</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> PRILEN <span class="token operator">=</span> <span class="token number">10</span> <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> SEQLEN <span class="token operator">=</span> <span class="token number">200005</span><span class="token punctuation">;</span><span class="token keyword">const</span> <span class="token keyword">int</span> LINELEN <span class="token operator">=</span> <span class="token number">76</span> <span class="token operator">+</span> <span class="token number">2</span><span class="token punctuation">;</span><span class="token keyword">struct</span> <span class="token class-name">_trie</span><span class="token punctuation">{</span>    <span class="token keyword">int</span> next<span class="token punctuation">[</span><span class="token number">26</span><span class="token punctuation">]</span><span class="token punctuation">;</span>    <span class="token keyword">int</span> cnt<span class="token punctuation">;</span><span class="token punctuation">}</span> trie<span class="token punctuation">[</span>PRISIZE <span class="token operator">*</span> PRILEN<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span> trieNodeCnt<span class="token punctuation">;</span><span class="token keyword">int</span> <span class="token function">trieInit</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token function">memset</span><span class="token punctuation">(</span>trie<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token keyword">sizeof</span><span class="token punctuation">(</span>trie<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    trieNodeCnt <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>    <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token comment">// trie tree's root</span><span class="token punctuation">}</span><span class="token keyword">void</span> <span class="token function">trieAdd</span><span class="token punctuation">(</span><span class="token keyword">int</span> root<span class="token punctuation">,</span> <span class="token keyword">const</span> <span class="token keyword">char</span> <span class="token operator">*</span>str<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">int</span> p <span class="token operator">=</span> root<span class="token punctuation">;</span>    <span class="token keyword">while</span><span class="token punctuation">(</span><span class="token operator">*</span>str<span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>trie<span class="token punctuation">[</span>p<span class="token punctuation">]</span><span class="token punctuation">.</span>next<span class="token punctuation">[</span><span class="token operator">*</span>str <span class="token operator">-</span> <span class="token char">'A'</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            trie<span class="token punctuation">[</span>p<span class="token punctuation">]</span><span class="token punctuation">.</span>next<span class="token punctuation">[</span><span class="token operator">*</span>str <span class="token operator">-</span> <span class="token char">'A'</span><span class="token punctuation">]</span> <span class="token operator">=</span> trieNodeCnt<span class="token operator">++</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>        p <span class="token operator">=</span> trie<span class="token punctuation">[</span>p<span class="token punctuation">]</span><span class="token punctuation">.</span>next<span class="token punctuation">[</span><span class="token operator">*</span>str <span class="token operator">-</span> <span class="token char">'A'</span><span class="token punctuation">]</span><span class="token punctuation">;</span>        str<span class="token operator">++</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    trie<span class="token punctuation">[</span>p<span class="token punctuation">]</span><span class="token punctuation">.</span>cnt <span class="token operator">+=</span> <span class="token number">1</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">bool</span> <span class="token function">trieSearch</span><span class="token punctuation">(</span><span class="token keyword">int</span> root<span class="token punctuation">,</span> <span class="token keyword">const</span> <span class="token keyword">char</span><span class="token operator">*</span> str<span class="token punctuation">,</span> <span class="token keyword">int</span> len<span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token keyword">int</span> p <span class="token operator">=</span> root<span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> len<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>trie<span class="token punctuation">[</span>p<span class="token punctuation">]</span><span class="token punctuation">.</span>next<span class="token punctuation">[</span>str<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">-</span> <span class="token char">'A'</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">)</span>            <span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span>        p <span class="token operator">=</span> trie<span class="token punctuation">[</span>p<span class="token punctuation">]</span><span class="token punctuation">.</span>next<span class="token punctuation">[</span>str<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">-</span> <span class="token char">'A'</span><span class="token punctuation">]</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">return</span> trie<span class="token punctuation">[</span>p<span class="token punctuation">]</span><span class="token punctuation">.</span>cnt <span class="token operator">&gt;</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">char</span> seq<span class="token punctuation">[</span>SEQLEN<span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span> seqlen <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token keyword">bool</span> reach<span class="token punctuation">[</span>SEQLEN<span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token comment">// reach[i] =  if seq[0...i) (length = i) can be composed from primitives.</span><span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token keyword">int</span> argc<span class="token punctuation">,</span> <span class="token keyword">char</span> <span class="token operator">*</span>argv<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"prefix.in"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">,</span> <span class="token constant">stdin</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">ifndef</span> <span class="token expression">USACO</span></span>    <span class="token function">freopen</span><span class="token punctuation">(</span><span class="token string">"prefix.out"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">,</span> <span class="token constant">stdout</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">endif</span> <span class="token comment">// USACO</span></span>    <span class="token keyword">int</span> root <span class="token operator">=</span> <span class="token function">trieInit</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// root = 0</span>    <span class="token function">memset</span><span class="token punctuation">(</span>reach<span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token keyword">sizeof</span><span class="token punctuation">(</span>reach<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">char</span> temp<span class="token punctuation">[</span>PRILEN<span class="token punctuation">]</span><span class="token punctuation">;</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> PRISIZE<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%s"</span><span class="token punctuation">,</span> temp<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>temp<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token char">'.'</span><span class="token punctuation">)</span>            <span class="token keyword">break</span><span class="token punctuation">;</span>        <span class="token function">trieAdd</span><span class="token punctuation">(</span>root<span class="token punctuation">,</span> temp<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">while</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token function">scanf</span><span class="token punctuation">(</span><span class="token string">"%s"</span><span class="token punctuation">,</span> seq <span class="token operator">+</span> seqlen<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">int</span> len <span class="token operator">=</span> <span class="token function">strlen</span><span class="token punctuation">(</span>seq <span class="token operator">+</span> seqlen<span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>len <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">)</span>            <span class="token keyword">break</span><span class="token punctuation">;</span>        seqlen <span class="token operator">+=</span> len<span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> PRILEN<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        reach<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">trieSearch</span><span class="token punctuation">(</span>root<span class="token punctuation">,</span> seq<span class="token punctuation">,</span> i<span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token punctuation">}</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">!=</span> seqlen<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>reach<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> j <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> j<span class="token operator">!=</span> PRILEN<span class="token punctuation">;</span> j<span class="token operator">++</span><span class="token punctuation">)</span>            <span class="token punctuation">{</span>                <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">trieSearch</span><span class="token punctuation">(</span>root<span class="token punctuation">,</span> seq <span class="token operator">+</span> i<span class="token punctuation">,</span> j<span class="token punctuation">)</span><span class="token punctuation">)</span>                    reach<span class="token punctuation">[</span>i <span class="token operator">+</span> j<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>            <span class="token punctuation">}</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> seqlen <span class="token punctuation">;</span> i <span class="token operator">!=</span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">--</span><span class="token punctuation">)</span>    <span class="token punctuation">{</span>        <span class="token keyword">if</span><span class="token punctuation">(</span>reach<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span>        <span class="token punctuation">{</span>            <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%d\n"</span><span class="token punctuation">,</span> i<span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span>        <span class="token punctuation">}</span>    <span class="token punctuation">}</span>    <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"0\n"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>BTW，这是我第一次写Trie，感觉还挺顺手的。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;题目意思就是给定1～200个短的Primitive (长度1～10)，以及一个长字符串 (长度200,000以内)，需要找出由这些Primitive任意重复连接形成的后者的最长前缀。&lt;/p&gt;
&lt;p&gt;DP + Trie&lt;/p&gt;
&lt;p&gt;设长字符串为seq，基本思路是若seq[0…i]是满足要求的前缀，那么seq[0…i+len]也是满足要求的前缀，len是各个Primitive的长度。&lt;/p&gt;
&lt;p&gt;然后就是用Trie优化一下判断seq[i…i+len]是否在Primitive集合的过程。&lt;/p&gt;
&lt;pre class=&quot;line-numbers language-cpp&quot; style=&quot;max-height: 30em&quot; data-prismjs-copy-timeout=&quot;500&quot; tabindex=&quot;0&quot;&gt;&lt;code id=&quot;cbb0b63d&quot; class=&quot;language-cpp&quot; data-prism-hydrate=&quot;{&amp;quot;element&amp;quot;:&amp;quot;cbb0b63d&amp;quot;,&amp;quot;language&amp;quot;:&amp;quot;cpp&amp;quot;,&amp;quot;code&amp;quot;:&amp;quot;/*&#92;nID: xjtuacm1&#92;nPROG: prefix&#92;nLANG: C++&#92;n*/&#92;n#include&#92;u003ciostream&#92;u003e&#92;n#include&lt;stack&gt;&#92;n#include&lt;cstring&gt;&#92;n#include&lt;cstdio&gt;&#92;n#include&lt;queue&gt;&#92;n#include&lt;algorithm&gt;&#92;n#include&lt;map&gt;&#92;n#include&lt;set&gt;&#92;nusing namespace std;&#92;n&#92;nconst int PRISIZE = 205;&#92;nconst int PRILEN = 10 + 1;&#92;nconst int SEQLEN = 200005;&#92;nconst int LINELEN = 76 + 2;&#92;n&#92;nstruct _trie&#92;n{&#92;n    int next[26];&#92;n    int cnt;&#92;n} trie[PRISIZE * PRILEN];&#92;nint trieNodeCnt;&#92;n&#92;nint trieInit()&#92;n{&#92;n    memset(trie, 0, sizeof(trie));&#92;n    trieNodeCnt = 1;&#92;n&#92;n    return 0; // trie tree&#92;u0027s root&#92;n}&#92;n&#92;nvoid trieAdd(int root, const char *str)&#92;n{&#92;n    int p = root;&#92;n    while(*str)&#92;n    {&#92;n        if(trie[p].next[*str - &#39;A&#39;] == 0)&#92;n        {&#92;n            trie[p].next[*str - &#39;A&#39;] = trieNodeCnt++;&#92;n        }&#92;n        p = trie[p].next[*str - &#39;A&#39;];&#92;n        str++;&#92;n    }&#92;n    trie[p].cnt += 1;&#92;n}&#92;n&#92;nbool trieSearch(int root, const char* str, int len)&#92;n{&#92;n    int p = root;&#92;n    for(int i = 0; i!= len; i++)&#92;n    {&#92;n        if(trie[p].next[str[i] - &#39;A&#39;] == 0)&#92;n            return false;&#92;n&#92;n        p = trie[p].next[str[i] - &#39;A&#39;];&#92;n    }&#92;n&#92;n    return trie[p].cnt &gt; 0;&#92;n}&#92;n&#92;nchar seq[SEQLEN];&#92;nint seqlen = 0;&#92;nbool reach[SEQLEN]; // reach[i] =  if seq[0...i) (length = i) can be composed from primitives.&#92;n&#92;nint main(int argc, char *argv[])&#92;n{&#92;n    freopen(&#92;&amp;quot;prefix.in&#92;&amp;quot;, &#92;&amp;quot;r&#92;&amp;quot;, stdin);&#92;n#ifndef USACO&#92;n    freopen(&#92;&amp;quot;prefix.out&#92;&amp;quot;, &#92;&amp;quot;w&#92;&amp;quot;, stdout);&#92;n#endif // USACO&#92;n&#92;n    int root = trieInit(); // root = 0&#92;n    memset(reach, false, sizeof(reach));&#92;n&#92;n    char temp[PRILEN];&#92;n    for(int i = 0; i!= PRISIZE; i++)&#92;n    {&#92;n        scanf(&#92;&amp;quot;%s&#92;&amp;quot;, temp);&#92;n        if(temp[0] == &#39;.&#39;)&#92;n            break;&#92;n&#92;n        trieAdd(root, temp);&#92;n    }&#92;n&#92;n    while(true)&#92;n    {&#92;n        scanf(&#92;&amp;quot;%s&#92;&amp;quot;, seq + seqlen);&#92;n        int len = strlen(seq + seqlen);&#92;n        if(len == 0)&#92;n            break;&#92;n&#92;n        seqlen += len;&#92;n    }&#92;n&#92;n    for(int i = 1; i!= PRILEN; i++)&#92;n    {&#92;n        reach[i] = trieSearch(root, seq, i);&#92;n    }&#92;n&#92;n    for(int i = 0; i!= seqlen; i++)&#92;n    {&#92;n        if(reach[i])&#92;n        {&#92;n            for(int j = 1; j!= PRILEN; j++)&#92;n            {&#92;n                if(trieSearch(root, seq + i, j))&#92;n                    reach[i + j] = true;&#92;n            }&#92;n        }&#92;n    }&#92;n&#92;n    for(int i = seqlen ; i != 0; i--)&#92;n    {&#92;n        if(reach[i])&#92;n        {&#92;n            printf(&#92;&amp;quot;%d&#92;&#92;n&#92;&amp;quot;, i);&#92;n            return 0;&#92;n        }&#92;n    }&#92;n&#92;n    printf(&#92;&amp;quot;0&#92;&#92;n&#92;&amp;quot;);&#92;n    return 0;&#92;n}&amp;quot;,&amp;quot;settings&amp;quot;:{},&amp;quot;vars&amp;quot;:{&amp;quot;command-line&amp;quot;:{&amp;quot;complete&amp;quot;:true}},&amp;quot;highlightedCode&amp;quot;:&amp;quot;&lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;/*&#92;nID: xjtuacm1&#92;nPROG: prefix&#92;nLANG: C++&#92;n*/&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;u0026lt;iostream&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;stack&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cstring&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;cstdio&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;queue&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;algorithm&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;map&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;include&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&amp;amp;lt;set&gt;&lt;/span&gt;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;using&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;namespace&lt;/span&gt; std&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; PRISIZE &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;205&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; PRILEN &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;10&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; SEQLEN &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;200005&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; LINELEN &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;76&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;2&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;struct&lt;/span&gt; &lt;span class=&#92;&amp;quot;token class-name&#92;&amp;quot;&gt;_trie&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; next&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;26&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; cnt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt; trie&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;PRISIZE &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt; PRILEN&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; trieNodeCnt&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;trieInit&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;memset&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;trie&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;sizeof&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;trie&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    trieNodeCnt &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// trie tree&#39;s root&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;void&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;trieAdd&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; root&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;str&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; p &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; root&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;while&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;str&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;trie&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;p&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;next&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;str &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39;A&#39;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            trie&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;p&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;next&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;str &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39;A&#39;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; trieNodeCnt&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        p &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; trie&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;p&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;next&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;str &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39;A&#39;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        str&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    trie&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;p&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;cnt &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;bool&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;trieSearch&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; root&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;const&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt;&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt; str&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; len&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; p &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; root&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; len&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;trie&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;p&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;next&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;str&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39;A&#39;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;false&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n        p &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; trie&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;p&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;next&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;str&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;-&lt;/span&gt; &lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39;A&#39;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; trie&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;p&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;.&lt;/span&gt;cnt &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;&gt;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt; seq&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;SEQLEN&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; seqlen &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;bool&lt;/span&gt; reach&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;SEQLEN&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// reach[i] =  if seq[0...i) (length = i) can be composed from primitives.&lt;/span&gt;&#92;n&#92;n&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;main&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; argc&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;*&lt;/span&gt;argv&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;prefix.in&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;r&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdin&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;ifndef&lt;/span&gt; &lt;span class=&#92;&amp;quot;token expression&#92;&amp;quot;&gt;USACO&lt;/span&gt;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;freopen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;prefix.out&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;w&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token constant&#92;&amp;quot;&gt;stdout&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token macro property&#92;&amp;quot;&gt;&lt;span class=&#92;&amp;quot;token directive-hash&#92;&amp;quot;&gt;#&lt;/span&gt;&lt;span class=&#92;&amp;quot;token directive keyword&#92;&amp;quot;&gt;endif&lt;/span&gt; &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// USACO&lt;/span&gt;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; root &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;trieInit&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; &lt;span class=&#92;&amp;quot;token comment&#92;&amp;quot;&gt;// root = 0&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;memset&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;reach&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;false&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;sizeof&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;reach&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;char&lt;/span&gt; temp&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;PRILEN&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; PRISIZE&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;scanf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%s&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; temp&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;temp&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;&lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; &lt;span class=&#92;&amp;quot;token char&#92;&amp;quot;&gt;&#39;.&#39;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;break&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;trieAdd&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;root&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; temp&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;while&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;true&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;scanf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%s&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; seq &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; seqlen&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; len &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;strlen&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;seq &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; seqlen&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;len &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;==&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;break&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&#92;n        seqlen &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+=&lt;/span&gt; len&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; PRILEN&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        reach&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;trieSearch&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;root&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; seq&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; seqlen&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;reach&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; j &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;1&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; PRILEN&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;++&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n                &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;trieSearch&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;root&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; seq &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n                    reach&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;+&lt;/span&gt; j&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt; &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token boolean&#92;&amp;quot;&gt;true&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;for&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;int&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;=&lt;/span&gt; seqlen &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i &lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;!=&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token operator&#92;&amp;quot;&gt;--&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;if&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;reach&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;[&lt;/span&gt;i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;]&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;{&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;printf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;%d&#92;&#92;n&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;,&lt;/span&gt; i&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n            &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n        &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&#92;n&#92;n    &lt;span class=&#92;&amp;quot;token function&#92;&amp;quot;&gt;printf&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;(&lt;/span&gt;&lt;span class=&#92;&amp;quot;token string&#92;&amp;quot;&gt;&#92;&amp;quot;0&#92;&#92;n&#92;&amp;quot;&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;)&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n    &lt;span class=&#92;&amp;quot;token keyword&#92;&amp;quot;&gt;return&lt;/span&gt; &lt;span class=&#92;&amp;quot;token number&#92;&amp;quot;&gt;0&lt;/span&gt;&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;;&lt;/span&gt;&#92;n&lt;span class=&#92;&amp;quot;token punctuation&#92;&amp;quot;&gt;}&lt;/span&gt;&amp;quot;,&amp;quot;plugins&amp;quot;:{&amp;quot;lineNumbers&amp;quot;:true}}&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;/*
ID: xjtuacm1
PROG: prefix
LANG: C++
*/&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;stack&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cstring&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;cstdio&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;queue&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;algorithm&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;map&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&amp;lt;set&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;namespace&lt;/span&gt; std&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; PRISIZE &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;205&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; PRILEN &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; SEQLEN &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200005&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; LINELEN &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;76&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;_trie&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; next&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;26&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; cnt&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; trie&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;PRISIZE &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; PRILEN&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; trieNodeCnt&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;trieInit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;memset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;trie&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;trie&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    trieNodeCnt &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// trie tree&#39;s root&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;trieAdd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; root&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;str&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; p &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; root&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;str&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;trie&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;p&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;next&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;str &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&#39;A&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            trie&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;p&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;next&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;str &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&#39;A&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; trieNodeCnt&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        p &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; trie&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;p&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;next&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;str &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&#39;A&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        str&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    trie&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;p&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;cnt &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;trieSearch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; root&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; str&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; len&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; p &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; root&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; len&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;trie&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;p&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;next&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;str&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&#39;A&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        p &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; trie&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;p&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;next&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;str&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&#39;A&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; trie&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;p&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;cnt &lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; seq&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;SEQLEN&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; seqlen &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;bool&lt;/span&gt; reach&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;SEQLEN&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// reach[i] =  if seq[0...i) (length = i) can be composed from primitives.&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; argc&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;argv&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;prefix.in&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifndef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;USACO&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;freopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;prefix.out&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;w&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;stdout&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// USACO&lt;/span&gt;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; root &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;trieInit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// root = 0&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;memset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;reach&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;reach&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; temp&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;PRILEN&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; PRISIZE&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; temp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;temp&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&#39;.&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token function&quot;&gt;trieAdd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;root&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; temp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; seq &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; seqlen&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; len &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;strlen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seq &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; seqlen&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;len &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        seqlen &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; len&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; PRILEN&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        reach&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;trieSearch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;root&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; seq&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; seqlen&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;reach&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; PRILEN&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;trieSearch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;root&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; seq &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                    reach&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; seqlen &lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;reach&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&#92;n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;0&#92;n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</summary>
    
    
    
    
    <category term="ACM" scheme="https://unlimited-code.works/tags/acm/"/>
    
    <category term="USACO" scheme="https://unlimited-code.works/tags/usaco/"/>
    
    <category term="Trie" scheme="https://unlimited-code.works/tags/trie/"/>
    
    <category term="DP" scheme="https://unlimited-code.works/tags/dp/"/>
    
  </entry>
  
  <entry>
    <title>i18n和l10n的意思</title>
    <link href="https://unlimited-code.works/blog/2013/02/05/meaning-of-i18n-l10n/"/>
    <id>https://unlimited-code.works/blog/2013/02/05/meaning-of-i18n-l10n/</id>
    <published>2013-02-05T21:55:00.000Z</published>
    <updated>2015-12-09T04:08:12.000Z</updated>
    
    <content type="html"><![CDATA[<ul><li>经常在网上看到i18n和l10n的说法，于是很好奇它们的意思<ul><li>i18n是internationalization (国际化)的缩写,首位的i和末尾的n之间有18个字母,所以简写为i18n</li><li>同理l10n是localization (区域化)的缩写</li></ul></li></ul>]]></content>
    
    
    <summary type="html">&lt;ul&gt;
&lt;li&gt;经常在网上看到i18n和l10n的说法，于是很好奇它们的意思
&lt;ul&gt;
&lt;li&gt;i18n是internationalization (国际化)的缩写,首位的i和末尾的n之间有18个字母,所以简写为i18n&lt;/li&gt;
&lt;li&gt;同理l10n是localization (区域化)的缩写&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</summary>
    
    
    
    
    <category term="i18n" scheme="https://unlimited-code.works/tags/i18n/"/>
    
    <category term="l10n" scheme="https://unlimited-code.works/tags/l10n/"/>
    
    <category term="豆知识" scheme="https://unlimited-code.works/tags/%E8%B1%86%E7%9F%A5%E8%AF%86/"/>
    
  </entry>
  
  <entry>
    <title>A really complex markdown test</title>
    <link href="https://unlimited-code.works/blog/1970/11/18/complex-md-test/"/>
    <id>https://unlimited-code.works/blog/1970/11/18/complex-md-test/</id>
    <published>1970-11-18T08:00:00.000Z</published>
    <updated>1970-11-22T22:40:00.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="overview">Overview<a class="header-anchor" href="#overview"></a></h2><h3 id="philosophy">Philosophy<a class="header-anchor" href="#philosophy"></a></h3><p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p><p>Readability, however, is emphasized above all else. A Markdown-formatteddocument should be publishable as-is, as plain text, without lookinglike it’s been marked up with tags or formatting instructions. WhileMarkdown’s syntax has been influenced by several existing text-to-HTMLfilters – including [Setext] <a href="http://docutils.sourceforge.net/mirror/setext.html">1</a>, [atx] <a href="http://www.aaronsw.com/2002/atx/">2</a>, [Textile] <a href="http://textism.com/tools/textile/">3</a>, [reStructuredText] <a href="http://docutils.sourceforge.net/rst.html">4</a>,[Grutatext] <a href="http://www.triptico.com/software/grutatxt.html">5</a>, and [EtText] <a href="http://ettext.taint.org/doc/">6</a> – the single biggest source ofinspiration for Markdown’s syntax is the format of plain text email.</p><p>To this end, Markdown’s syntax is comprised entirely of punctuationcharacters, which punctuation characters have been carefully chosen soas to look like what they mean. E.g., asterisks around a word actuallylook like *emphasis*. Markdown lists look like, well, lists. Evenblockquotes look like quoted passages of text, assuming you’ve everused email.</p><h3 id="inline-html">Inline HTML<a class="header-anchor" href="#inline-html"></a></h3><p>Markdown’s syntax is intended for one purpose: to be used as aformat for <em>writing</em> for the web.</p><p>Markdown is not a replacement for HTML, or even close to it. Itssyntax is very small, corresponding only to a very small subset ofHTML tags. The idea is <em>not</em> to create a syntax that makes it easierto insert HTML tags. In my opinion, HTML tags are already easy toinsert. The idea for Markdown is to make it easy to read, write, andedit prose. HTML is a <em>publishing</em> format; Markdown is a <em>writing</em>format. Thus, Markdown’s formatting syntax only addresses issues thatcan be conveyed in plain text.</p><p>For any markup that is not covered by Markdown’s syntax, you simplyuse HTML itself. There’s no need to preface it or delimit it toindicate that you’re switching from Markdown to HTML; you just usethe tags.</p><p>The only restrictions are that block-level HTML elements – e.g. <code>&lt;div&gt;</code>,<code>&lt;table&gt;</code>, <code>&lt;pre&gt;</code>, <code>&lt;p&gt;</code>, etc. – must be separated from surroundingcontent by blank lines, and the start and end tags of the block shouldnot be indented with tabs or spaces. Markdown is smart enough notto add extra (unwanted) <code>&lt;p&gt;</code> tags around HTML block-level tags.</p><p>For example, to add an HTML table to a Markdown article:</p><pre><code>This is a regular paragraph.&lt;table&gt;    &lt;tr&gt;        &lt;td&gt;Foo&lt;/td&gt;    &lt;/tr&gt;&lt;/table&gt;This is another regular paragraph.</code></pre><p>Note that Markdown formatting syntax is not processed within block-levelHTML tags. E.g., you can’t use Markdown-style <code>*emphasis*</code> inside anHTML block.</p><p>Span-level HTML tags – e.g. <code>&lt;span&gt;</code>, <code>&lt;cite&gt;</code>, or <code>&lt;del&gt;</code> – can beused anywhere in a Markdown paragraph, list item, or header. If youwant, you can even use HTML tags instead of Markdown formatting; e.g. ifyou’d prefer to use HTML <code>&lt;a&gt;</code> or <code>&lt;img&gt;</code> tags instead of Markdown’slink or image syntax, go right ahead.</p><p>Unlike block-level HTML tags, Markdown syntax <em>is</em> processed withinspan-level tags.</p><h3 id="automatic-escaping-for-special-characters">Automatic Escaping for Special Characters<a class="header-anchor" href="#automatic-escaping-for-special-characters"></a></h3><p>In HTML, there are two characters that demand special treatment: <code>&lt;</code>and <code>&amp;</code>. Left angle brackets are used to start tags; ampersands areused to denote HTML entities. If you want to use them as literalcharacters, you must escape them as entities, e.g. <code>&amp;lt;</code>, and<code>&amp;amp;</code>.</p><p>Ampersands in particular are bedeviling for web writers. If you want towrite about ‘AT&amp;T’, you need to write ‘<code>AT&amp;amp;T</code>’. You even need toescape ampersands within URLs. Thus, if you want to link to:</p><pre><code>http://images.google.com/images?num=30&amp;q=larry+bird</code></pre><p>you need to encode the URL as:</p><pre><code>http://images.google.com/images?num=30&amp;amp;q=larry+bird</code></pre><p>in your anchor tag <code>href</code> attribute. Needless to say, this is easy toforget, and is probably the single most common source of HTML validationerrors in otherwise well-marked-up web sites.</p><p>Markdown allows you to use these characters naturally, taking care ofall the necessary escaping for you. If you use an ampersand as part ofan HTML entity, it remains unchanged; otherwise it will be translatedinto <code>&amp;amp;</code>.</p><p>So, if you want to include a copyright symbol in your article, you can write:</p><pre><code>&amp;copy;</code></pre><p>and Markdown will leave it alone. But if you write:</p><pre><code>AT&amp;T</code></pre><p>Markdown will translate it to:</p><pre><code>AT&amp;amp;T</code></pre><p>Similarly, because Markdown supports <a href="#html">inline HTML</a>, if you useangle brackets as delimiters for HTML tags, Markdown will treat them assuch. But if you write:</p><pre><code>4 &lt; 5</code></pre><p>Markdown will translate it to:</p><pre><code>4 &amp;lt; 5</code></pre><p>However, inside Markdown code spans and blocks, angle brackets andampersands are <em>always</em> encoded automatically. This makes it easy to useMarkdown to write about HTML code. (As opposed to raw HTML, which is aterrible format for writing about HTML syntax, because every single <code>&lt;</code>and <code>&amp;</code> in your example code needs to be escaped.)</p><h2 id="block-elements">Block Elements<a class="header-anchor" href="#block-elements"></a></h2><h3 id="paragraphs-and-line-breaks">Paragraphs and Line Breaks<a class="header-anchor" href="#paragraphs-and-line-breaks"></a></h3><p>A paragraph is simply one or more consecutive lines of text, separatedby one or more blank lines. (A blank line is any line that looks like ablank line – a line containing nothing but spaces or tabs is consideredblank.) Normal paragraphs should not be indented with spaces or tabs.</p><p>The implication of the “one or more consecutive lines of text” rule isthat Markdown supports “hard-wrapped” text paragraphs. This differssignificantly from most other text-to-HTML formatters (including MovableType’s “Convert Line Breaks” option) which translate every line breakcharacter in a paragraph into a <code>&lt;br /&gt;</code> tag.</p><p>When you <em>do</em> want to insert a <code>&lt;br /&gt;</code> break tag using Markdown, youend a line with two or more spaces, then type return.</p><p>Yes, this takes a tad more effort to create a <code>&lt;br /&gt;</code>, but a simplistic“every line break is a <code>&lt;br /&gt;</code>” rule wouldn’t work for Markdown.Markdown’s email-style <a href="#blockquote">blockquoting</a> and multi-paragraph <a href="#list">list items</a>work best – and look better – when you format them with hard breaks.</p><h3 id="headers">Headers<a class="header-anchor" href="#headers"></a></h3><p>Markdown supports two styles of headers, [Setext] <a href="http://docutils.sourceforge.net/mirror/setext.html">1</a> and [atx] <a href="http://www.aaronsw.com/2002/atx/">2</a>.</p><p>Setext-style headers are “underlined” using equal signs (for first-levelheaders) and dashes (for second-level headers). For example:</p><pre><code>This is an H1=============This is an H2-------------</code></pre><p>Any number of underlining <code>=</code>'s or <code>-</code>'s will work.</p><p>Atx-style headers use 1-6 hash characters at the start of the line,corresponding to header levels 1-6. For example:</p><pre><code># This is an H1## This is an H2###### This is an H6</code></pre><p>Optionally, you may “close” atx-style headers. This is purelycosmetic – you can use this if you think it looks better. Theclosing hashes don’t even need to match the number of hashesused to open the header. (The number of opening hashesdetermines the header level.) :</p><pre><code># This is an H1 ### This is an H2 ##### This is an H3 ######</code></pre><h3 id="blockquotes">Blockquotes<a class="header-anchor" href="#blockquotes"></a></h3><h4 id="normal">Normal<a class="header-anchor" href="#normal"></a></h4><p>Markdown uses email-style <code>&gt;</code> characters for blockquoting. If you’refamiliar with quoting passages of text in an email message, then youknow how to create a blockquote in Markdown. It looks best if you hardwrap the text and put a <code>&gt;</code> before every line:</p><pre><code>&gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,&gt; consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.&gt; Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.&gt;&gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse&gt; id sem consectetuer libero luctus adipiscing.</code></pre><p>The above looks like:</p><blockquote><p>This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.</p><p>Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisseid sem consectetuer libero luctus adipiscing.</p></blockquote><p>Markdown allows you to be lazy and only put the <code>&gt;</code> before the firstline of a hard-wrapped paragraph:</p><pre><code>&gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.&gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisseid sem consectetuer libero luctus adipiscing.</code></pre><h4 id="nesting">Nesting<a class="header-anchor" href="#nesting"></a></h4><p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) byadding additional levels of <code>&gt;</code>:</p><pre><code>&gt; This is the first level of quoting.&gt;&gt; &gt; This is nested blockquote.&gt;&gt; Back to the first level.</code></pre><p>Blockquotes can contain other Markdown elements, including headers, lists,and code blocks:</p><pre><code>&gt; ## This is a header.&gt; &gt; 1.   This is the first list item.&gt; 2.   This is the second list item.&gt; &gt; Here's some example code:&gt; &gt;     return shell_exec(&quot;echo $input | $markdown_script&quot;);</code></pre><p>Any decent text editor should make email-style quoting easy. Forexample, with BBEdit, you can make a selection and choose IncreaseQuote Level from the Text menu.</p><h4 id="tag-plugins">Tag plugins<a class="header-anchor" href="#tag-plugins"></a></h4><p>If you want more control over footer of the quote, use a block tag:</p><!-- The following code block has to be formatted like this due to automatic escaping of tags --><pre><code>&#123;% blockquote David Levithan, Wide Awake %&#125;Do not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy.&#123;% endblockquote %&#125;</code></pre><p>This will produce a styled footer. Notice how the margin is still correct before and after theblockquote.</p><blockquote><p>Do not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy.</p><footer><strong>David Levithan</strong><cite>Wide Awake google.com Google</cite></footer></blockquote><p>Another center style blockquote:</p><!-- The following code block has to be formatted like this due to automatic escaping of tags --><pre><code>&#123;% centerquote %&#125;Some quote&#123;% endcenterquote %&#125;</code></pre><p>will produce</p><blockquote class="blockquote-center"><p>Some quote</p></blockquote><h3 id="lists">Lists<a class="header-anchor" href="#lists"></a></h3><p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p><p>Unordered lists use asterisks, pluses, and hyphens – interchangably– as list markers:</p><pre><code>*   Red*   Green*   Blue</code></pre><p>is equivalent to:</p><pre><code>+   Red+   Green+   Blue</code></pre><p>and:</p><pre><code>-   Red-   Green-   Blue</code></pre><p>Ordered lists use numbers followed by periods:</p><pre><code>1.  Bird2.  McHale3.  Parish</code></pre><p>It’s important to note that the actual numbers you use to mark thelist have no effect on the HTML output Markdown produces. The HTMLMarkdown produces from the above list is:</p><pre><code>&lt;ol&gt;&lt;li&gt;Bird&lt;/li&gt;&lt;li&gt;McHale&lt;/li&gt;&lt;li&gt;Parish&lt;/li&gt;&lt;/ol&gt;</code></pre><p>If you instead wrote the list in Markdown like this:</p><pre><code>1.  Bird1.  McHale1.  Parish</code></pre><p>or even:</p><pre><code>3. Bird1. McHale8. Parish</code></pre><p>you’d get the exact same HTML output. The point is, if you want to,you can use ordinal numbers in your ordered Markdown lists, so thatthe numbers in your source match the numbers in your published HTML.But if you want to be lazy, you don’t have to.</p><p>If you do use lazy list numbering, however, you should still start thelist with the number 1. At some point in the future, Markdown may supportstarting ordered lists at an arbitrary number.</p><p>List markers typically start at the left margin, but may be indented byup to three spaces. List markers must be followed by one or more spacesor a tab.</p><p>To make lists look nice, you can wrap items with hanging indents:</p><pre><code>*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.    Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,    viverra nec, fringilla in, laoreet vitae, risus.*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.    Suspendisse id sem consectetuer libero luctus adipiscing.</code></pre><p>But if you want to be lazy, you don’t have to:</p><pre><code>*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,viverra nec, fringilla in, laoreet vitae, risus.*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.Suspendisse id sem consectetuer libero luctus adipiscing.</code></pre><p>If list items are separated by blank lines, Markdown will wrap theitems in <code>&lt;p&gt;</code> tags in the HTML output. For example, this input:</p><pre><code>*   Bird*   Magic</code></pre><p>will turn into:</p><pre><code>&lt;ul&gt;&lt;li&gt;Bird&lt;/li&gt;&lt;li&gt;Magic&lt;/li&gt;&lt;/ul&gt;</code></pre><p>But this:</p><pre><code>*   Bird*   Magic</code></pre><p>will turn into:</p><pre><code>&lt;ul&gt;&lt;li&gt;&lt;p&gt;Bird&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Magic&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</code></pre><p>List items may consist of multiple paragraphs. Each subsequentparagraph in a list item must be indented by either 4 spacesor one tab:</p><pre><code>1.  This is a list item with two paragraphs. Lorem ipsum dolor    sit amet, consectetuer adipiscing elit. Aliquam hendrerit    mi posuere lectus.    Vestibulum enim wisi, viverra nec, fringilla in, laoreet    vitae, risus. Donec sit amet nisl. Aliquam semper ipsum    sit amet velit.2.  Suspendisse id sem consectetuer libero luctus adipiscing.</code></pre><p>It looks nice if you indent every line of the subsequentparagraphs, but here again, Markdown will allow you to belazy:</p><pre><code>*   This is a list item with two paragraphs.    This is the second paragraph in the list item. You'reonly required to indent the first line. Lorem ipsum dolorsit amet, consectetuer adipiscing elit.*   Another item in the same list.</code></pre><p>To put a blockquote within a list item, the blockquote’s <code>&gt;</code>delimiters need to be indented:</p><pre><code>*   A list item with a blockquote:    &gt; This is a blockquote    &gt; inside a list item.</code></pre><p>To put a code block within a list item, the code block needsto be indented <em>twice</em> – 8 spaces or two tabs:</p><pre><code>*   A list item with a code block:        &lt;code goes here&gt;</code></pre><p>It’s worth noting that it’s possible to trigger an ordered list byaccident, by writing something like this:</p><pre><code>1986. What a great season.</code></pre><p>In other words, a <em>number-period-space</em> sequence at the beginning of aline. To avoid this, you can backslash-escape the period:</p><pre><code>1986\. What a great season.</code></pre><h3 id="code-blocks">Code Blocks<a class="header-anchor" href="#code-blocks"></a></h3><p>Pre-formatted code blocks are used for writing about programming ormarkup source code. Rather than forming normal paragraphs, the linesof a code block are interpreted literally. Markdown wraps a code blockin both <code>&lt;pre&gt;</code> and <code>&lt;code&gt;</code> tags.</p><p>To produce a code block in Markdown, simply indent every line of theblock by at least 4 spaces or 1 tab. For example, given this input:</p><pre><code>This is a normal paragraph:    This is a code block.</code></pre><p>Markdown will generate:</p><pre><code>&lt;p&gt;This is a normal paragraph:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;This is a code block.&lt;/code&gt;&lt;/pre&gt;</code></pre><p>One level of indentation – 4 spaces or 1 tab – is removed from eachline of the code block. For example, this:</p><pre><code>Here is an example of AppleScript:    tell application &quot;Foo&quot;        beep    end tell</code></pre><p>will turn into:</p><pre><code>&lt;p&gt;Here is an example of AppleScript:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;tell application &quot;Foo&quot;    beepend tell&lt;/code&gt;&lt;/pre&gt;</code></pre><p>A code block continues until it reaches a line that is not indented(or the end of the article).</p><p>Within a code block, ampersands (<code>&amp;</code>) and angle brackets (<code>&lt;</code> and <code>&gt;</code>)are automatically converted into HTML entities. This makes it veryeasy to include example HTML source code using Markdown – just pasteit and indent it, and Markdown will handle the hassle of encoding theampersands and angle brackets. For example, this:</p><pre><code>    &lt;div class=&quot;footer&quot;&gt;        &amp;copy; 2004 Foo Corporation    &lt;/div&gt;</code></pre><p>will turn into:</p><pre><code>&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&quot;footer&quot;&amp;gt;    &amp;amp;copy; 2004 Foo Corporation&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;</code></pre><p>Regular Markdown syntax is not processed within code blocks. E.g.,asterisks are just literal asterisks within a code block. This meansit’s also easy to use Markdown to write about Markdown’s own syntax.</p><h3 id="horizontal-rules">Horizontal Rules<a class="header-anchor" href="#horizontal-rules"></a></h3><p>You can produce a horizontal rule tag (<code>&lt;hr /&gt;</code>) by placing three ormore hyphens, asterisks, or underscores on a line by themselves. If youwish, you may use spaces between the hyphens or asterisks. Each of thefollowing lines will produce a horizontal rule:</p><pre><code>* * *********- - ----------------------------------------</code></pre><h3 id="callouts">Callouts<a class="header-anchor" href="#callouts"></a></h3><p>All available types:</p><details class="note default"><summary><p>Default Callout</p></summary><p>This is a default callout.</p></details><details class="note primary"><summary><p>Tips</p></summary><p>This is a primary callout.</p></details><details class="note success"><summary><p>Success</p></summary><p>This is a success callout.</p></details><details class="note info"><summary><p>Info</p></summary><p>This is a info callout.</p></details><details class="note warning"><summary><p>Warning</p></summary><p>This is a warning callout.</p></details><details class="note danger"><summary><p>Danger</p></summary><p>This is a danger callout.</p></details><h2 id="span-elements">Span Elements<a class="header-anchor" href="#span-elements"></a></h2><h3 id="labels">Labels<a class="header-anchor" href="#labels"></a></h3><pre><code>&#123;% label default@A default %&#125;&#123;% label primary@The primary %&#125;&#123;% label info@An info %&#125;&#123;% label success@A success %&#125;&#123;% label warning@A warning %&#125;&#123;% label danger@A danger %&#125;</code></pre><mark class="label default">A default</mark><mark class="label primary">The primary</mark><mark class="label info">An info</mark><mark class="label success">A success</mark><mark class="label warning">A warning</mark><mark class="label danger">A danger</mark><h3 id="links">Links<a class="header-anchor" href="#links"></a></h3><p>Markdown supports two style of links: <em>inline</em> and <em>reference</em>.</p><p>In both styles, the link text is delimited by [square brackets].</p><p>To create an inline link, use a set of regular parentheses immediatelyafter the link text’s closing square bracket. Inside the parentheses,put the URL where you want the link to point, along with an <em>optional</em>title for the link, surrounded in quotes. For example:</p><pre><code>This is [an example](http://example.com/ &quot;Title&quot;) inline link.[This link](http://example.net/) has no title attribute.</code></pre><p>Will produce:</p><pre><code>&lt;p&gt;This is &lt;a href=&quot;http://example.com/&quot; title=&quot;Title&quot;&gt;an example&lt;/a&gt; inline link.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://example.net/&quot;&gt;This link&lt;/a&gt; has notitle attribute.&lt;/p&gt;</code></pre><p>If you’re referring to a local resource on the same server, you canuse relative paths:</p><pre><code>See my [About](/about/) page for details.   </code></pre><p>Reference-style links use a second set of square brackets, insidewhich you place a label of your choosing to identify the link:</p><pre><code>This is [an example][id] reference-style link.</code></pre><p>You can optionally use a space to separate the sets of brackets:</p><pre><code>This is [an example] [id] reference-style link.</code></pre><p>Then, anywhere in the document, you define your link label like this,on a line by itself:</p><pre><code>[id]: http://example.com/  &quot;Optional Title Here&quot;</code></pre><p>That is:</p><ul><li>Square brackets containing the link identifier (optionallyindented from the left margin using up to three spaces);</li><li>followed by a colon;</li><li>followed by one or more spaces (or tabs);</li><li>followed by the URL for the link;</li><li>optionally followed by a title attribute for the link, enclosedin double or single quotes, or enclosed in parentheses.</li></ul><p>The following three link definitions are equivalent:</p><pre><code>[foo]: http://example.com/  &quot;Optional Title Here&quot;[foo]: http://example.com/  'Optional Title Here'[foo]: http://example.com/  (Optional Title Here)</code></pre><p>The link URL may, optionally, be surrounded by angle brackets:</p><pre><code>[id]: &lt;http://example.com/&gt;  &quot;Optional Title Here&quot;</code></pre><p>You can put the title attribute on the next line and use extra spacesor tabs for padding, which tends to look better with longer URLs:</p><pre><code>[id]: http://example.com/longish/path/to/resource/here    &quot;Optional Title Here&quot;</code></pre><p>Link definitions are only used for creating links during Markdownprocessing, and are stripped from your document in the HTML output.</p><p>Link definition names may consist of letters, numbers, spaces, andpunctuation – but they are <em>not</em> case sensitive. E.g. these twolinks:</p><pre><code>[link text][a][link text][A]</code></pre><p>are equivalent.</p><p>The <em>implicit link name</em> shortcut allows you to omit the name of thelink, in which case the link text itself is used as the name.Just use an empty set of square brackets – e.g., to link the word“Google” to the <a href="http://google.com">google.com</a> web site, you could simply write:</p><pre><code>[Google][]</code></pre><p>And then define the link:</p><pre><code>[Google]: http://google.com/</code></pre><p>Because link names may contain spaces, this shortcut even works formultiple words in the link text:</p><pre><code>Visit [Daring Fireball][] for more information.</code></pre><p>And then define the link:</p><pre><code>[Daring Fireball]: http://daringfireball.net/</code></pre><p>Link definitions can be placed anywhere in your Markdown document. Itend to put them immediately after each paragraph in which they’reused, but if you want, you can put them all at the end of yourdocument, sort of like footnotes.</p><p>Here’s an example of reference links in action:</p><pre><code>I get 10 times more traffic from [Google] [1] than from[Yahoo] [2] or [MSN] [3].  [1]: http://google.com/        &quot;Google&quot;  [2]: http://search.yahoo.com/  &quot;Yahoo Search&quot;  [3]: http://search.msn.com/    &quot;MSN Search&quot;</code></pre><p>Using the implicit link name shortcut, you could instead write:</p><pre><code>I get 10 times more traffic from [Google][] than from[Yahoo][] or [MSN][].  [google]: http://google.com/        &quot;Google&quot;  [yahoo]:  http://search.yahoo.com/  &quot;Yahoo Search&quot;  [msn]:    http://search.msn.com/    &quot;MSN Search&quot;</code></pre><p>Both of the above examples will produce the following HTML output:</p><pre><code>&lt;p&gt;I get 10 times more traffic from &lt;a href=&quot;http://google.com/&quot;title=&quot;Google&quot;&gt;Google&lt;/a&gt; than from&lt;a href=&quot;http://search.yahoo.com/&quot; title=&quot;Yahoo Search&quot;&gt;Yahoo&lt;/a&gt;or &lt;a href=&quot;http://search.msn.com/&quot; title=&quot;MSN Search&quot;&gt;MSN&lt;/a&gt;.&lt;/p&gt;</code></pre><p>For comparison, here is the same paragraph written usingMarkdown’s inline link style:</p><pre><code>I get 10 times more traffic from [Google](http://google.com/ &quot;Google&quot;)than from [Yahoo](http://search.yahoo.com/ &quot;Yahoo Search&quot;) or[MSN](http://search.msn.com/ &quot;MSN Search&quot;).</code></pre><p>The point of reference-style links is not that they’re easier towrite. The point is that with reference-style links, your documentsource is vastly more readable. Compare the above examples: usingreference-style links, the paragraph itself is only 81 characterslong; with inline-style links, it’s 176 characters; and as raw HTML,it’s 234 characters. In the raw HTML, there’s more markup than thereis text.</p><p>With Markdown’s reference-style links, a source document much moreclosely resembles the final output, as rendered in a browser. Byallowing you to move the markup-related metadata out of the paragraph,you can add links without interrupting the narrative flow of yourprose.</p><h3 id="emphasis">Emphasis<a class="header-anchor" href="#emphasis"></a></h3><p>Markdown treats asterisks (<code>*</code>) and underscores (<code>_</code>) as indicators ofemphasis. Text wrapped with one <code>*</code> or <code>_</code> will be wrapped with anHTML <code>&lt;em&gt;</code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML<code>&lt;strong&gt;</code> tag. E.g., this input:</p><pre><code>*single asterisks*_single underscores_**double asterisks**__double underscores__</code></pre><p>will produce:</p><pre><code>&lt;em&gt;single asterisks&lt;/em&gt;&lt;em&gt;single underscores&lt;/em&gt;&lt;strong&gt;double asterisks&lt;/strong&gt;&lt;strong&gt;double underscores&lt;/strong&gt;</code></pre><p>You can use whichever style you prefer; the lone restriction is thatthe same character must be used to open and close an emphasis span.</p><p>Emphasis can be used in the middle of a word:</p><pre><code>un*frigging*believable</code></pre><p>But if you surround an <code>*</code> or <code>_</code> with spaces, it’ll be treated as aliteral asterisk or underscore.</p><p>To produce a literal asterisk or underscore at a position where itwould otherwise be used as an emphasis delimiter, you can backslashescape it:</p><pre><code>\*this text is surrounded by literal asterisks\*</code></pre><h3 id="code">Code<a class="header-anchor" href="#code"></a></h3><p>To indicate a span of code, wrap it with backtick quotes (<code>`</code>).Unlike a pre-formatted code block, a code span indicates code within anormal paragraph. For example:</p><pre><code>Use the `printf()` function.</code></pre><p>will produce:</p><pre><code>&lt;p&gt;Use the &lt;code&gt;printf()&lt;/code&gt; function.&lt;/p&gt;</code></pre><p>To include a literal backtick character within a code span, you can usemultiple backticks as the opening and closing delimiters:</p><pre><code>``There is a literal backtick (`) here.``</code></pre><p>which will produce this:</p><pre><code>&lt;p&gt;&lt;code&gt;There is a literal backtick (`) here.&lt;/code&gt;&lt;/p&gt;</code></pre><p>The backtick delimiters surrounding a code span may include spaces –one after the opening, one before the closing. This allows you to placeliteral backtick characters at the beginning or end of a code span:</p><pre><code>A single backtick in a code span: `` ` ``A backtick-delimited string in a code span: `` `foo` ``</code></pre><p>will produce:</p><pre><code>&lt;p&gt;A single backtick in a code span: &lt;code&gt;`&lt;/code&gt;&lt;/p&gt;&lt;p&gt;A backtick-delimited string in a code span: &lt;code&gt;`foo`&lt;/code&gt;&lt;/p&gt;</code></pre><p>With a code span, ampersands and angle brackets are encoded as HTMLentities automatically, which makes it easy to include example HTMLtags. Markdown will turn this:</p><pre><code>Please don't use any `&lt;blink&gt;` tags.</code></pre><p>into:</p><pre><code>&lt;p&gt;Please don't use any &lt;code&gt;&amp;lt;blink&amp;gt;&lt;/code&gt; tags.&lt;/p&gt;</code></pre><p>You can write this:</p><pre><code>`&amp;#8212;` is the decimal-encoded equivalent of `&amp;mdash;`.</code></pre><p>to produce:</p><pre><code>&lt;p&gt;&lt;code&gt;&amp;amp;#8212;&lt;/code&gt; is the decimal-encodedequivalent of &lt;code&gt;&amp;amp;mdash;&lt;/code&gt;.&lt;/p&gt;</code></pre><h4 id="code-from-file">Code from file<a class="header-anchor" href="#code-from-file"></a></h4><pre class="line-numbers language-cpp" style="max-height: 30em" data-prismjs-copy-timeout="500" tabindex="0"><code id="16075f3f" class="language-cpp" data-prism-hydrate="{&quot;element&quot;:&quot;16075f3f&quot;,&quot;language&quot;:&quot;cpp&quot;,&quot;code&quot;:&quot;#include \u003ciostream\u003e\nusing namespace std;\n\nint main()\n{\n    cout << \&quot;Hello world!\&quot; << endl;\n    return 0;\n}&quot;,&quot;settings&quot;:{},&quot;vars&quot;:{&quot;command-line&quot;:{&quot;complete&quot;:true}},&quot;highlightedCode&quot;:&quot;<span class=\&quot;token macro property\&quot;><span class=\&quot;token directive-hash\&quot;>#</span><span class=\&quot;token directive keyword\&quot;>include</span> <span class=\&quot;token string\&quot;>\u0026lt;iostream></span></span>\n<span class=\&quot;token keyword\&quot;>using</span> <span class=\&quot;token keyword\&quot;>namespace</span> std<span class=\&quot;token punctuation\&quot;>;</span>\n\n<span class=\&quot;token keyword\&quot;>int</span> <span class=\&quot;token function\&quot;>main</span><span class=\&quot;token punctuation\&quot;>(</span><span class=\&quot;token punctuation\&quot;>)</span>\n<span class=\&quot;token punctuation\&quot;>{</span>\n    cout <span class=\&quot;token operator\&quot;>&amp;lt;&amp;lt;</span> <span class=\&quot;token string\&quot;>\&quot;Hello world!\&quot;</span> <span class=\&quot;token operator\&quot;>&amp;lt;&amp;lt;</span> endl<span class=\&quot;token punctuation\&quot;>;</span>\n    <span class=\&quot;token keyword\&quot;>return</span> <span class=\&quot;token number\&quot;>0</span><span class=\&quot;token punctuation\&quot;>;</span>\n<span class=\&quot;token punctuation\&quot;>}</span>&quot;,&quot;plugins&quot;:{&quot;lineNumbers&quot;:true}}"><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">&lt;iostream&gt;</span></span><span class="token keyword">using</span> <span class="token keyword">namespace</span> std<span class="token punctuation">;</span><span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>    cout <span class="token operator">&lt;&lt;</span> <span class="token string">"Hello world!"</span> <span class="token operator">&lt;&lt;</span> endl<span class="token punctuation">;</span>    <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="images">Images<a class="header-anchor" href="#images"></a></h3><p>Admittedly, it’s fairly difficult to devise a “natural” syntax forplacing images into a plain text document format.</p><p>Markdown uses an image syntax that is intended to resemble the syntaxfor links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p><p>Inline image syntax looks like this:</p><pre><code>![Alt text](/path/to/img.jpg)![Alt text](/path/to/img.jpg &quot;Optional title&quot;)</code></pre><p>That is:</p><ul><li>An exclamation mark: <code>!</code>;</li><li>followed by a set of square brackets, containing the <code>alt</code>attribute text for the image;</li><li>followed by a set of parentheses, containing the URL or path tothe image, and an optional <code>title</code> attribute enclosed in doubleor single quotes.</li></ul><p>Reference-style image syntax looks like this:</p><pre><code>![Alt text][id]</code></pre><p>Where “id” is the name of a defined image reference. Image referencesare defined using syntax identical to link references:</p><pre><code>[id]: url/to/image  &quot;Optional title attribute&quot;</code></pre><p>As of this writing, Markdown has no syntax for specifying thedimensions of an image; if this is important to you, you can simplyuse regular HTML <code>&lt;img&gt;</code> tags.</p><hr /><h2 id="miscellaneous">Miscellaneous<a class="header-anchor" href="#miscellaneous"></a></h2><h3 id="automatic-links">Automatic Links<a class="header-anchor" href="#automatic-links"></a></h3><p>Markdown supports a shortcut style for creating “automatic” links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:</p><pre><code>&lt;http://example.com/&gt;</code></pre><p>Markdown will turn this into:</p><pre><code>&lt;a href=&quot;http://example.com/&quot;&gt;http://example.com/&lt;/a&gt;</code></pre><p>Automatic links for email addresses work similarly, except thatMarkdown will also perform a bit of randomized decimal and hexentity-encoding to help obscure your address from address-harvestingspambots. For example, Markdown will turn this:</p><pre><code>&lt;address@example.com&gt;</code></pre><p>into something like this:</p><pre><code>&lt;a href=&quot;&amp;#x6D;&amp;#x61;i&amp;#x6C;&amp;#x74;&amp;#x6F;:&amp;#x61;&amp;#x64;&amp;#x64;&amp;#x72;&amp;#x65;&amp;#115;&amp;#115;&amp;#64;&amp;#101;&amp;#120;&amp;#x61;&amp;#109;&amp;#x70;&amp;#x6C;e&amp;#x2E;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;&amp;#x61;&amp;#x64;&amp;#x64;&amp;#x72;&amp;#x65;&amp;#115;&amp;#115;&amp;#64;&amp;#101;&amp;#120;&amp;#x61;&amp;#109;&amp;#x70;&amp;#x6C;e&amp;#x2E;&amp;#99;&amp;#111;&amp;#109;&lt;/a&gt;</code></pre><p>which will render in a browser as a clickable link to “<a href="mailto:address@example.com">address@example.com</a>”.</p><p>(This sort of entity-encoding trick will indeed fool many, if notmost, address-harvesting bots, but it definitely won’t fool all ofthem. It’s better than nothing, but an address published in this waywill probably eventually start receiving spam.)</p><h3 id="backslash-escapes">Backslash Escapes<a class="header-anchor" href="#backslash-escapes"></a></h3><p>Markdown allows you to use backslash escapes to generate literalcharacters which would otherwise have special meaning in Markdown’sformatting syntax. For example, if you wanted to surround a wordwith literal asterisks (instead of an HTML <code>&lt;em&gt;</code> tag), you can usebackslashes before the asterisks, like this:</p><pre><code>\*literal asterisks\*</code></pre><p>Markdown provides backslash escapes for the following characters:</p><pre><code>\   backslash`   backtick*   asterisk_   underscore&#123;&#125;  curly braces[]  square brackets()  parentheses#   hash mark+plus sign-minus sign (hyphen).   dot!   exclamation mark</code></pre>]]></content>
    
    
    <summary type="html">&lt;h2 id=&quot;overview&quot;&gt;Overview&lt;/h2&gt;
&lt;h3 id=&quot;philosophy&quot;&gt;Philosophy&lt;/h3&gt;
&lt;p&gt;Markdown is intended to be as easy-to-read and easy-to-write as is feasible.&lt;/p&gt;
&lt;p&gt;Readability, however, is emphasized above all else. A Markdown-formatted
document should be publishable as-is, as plain text, without looking
like it’s been marked up with tags or formatting instructions. While
Markdown’s syntax has been influenced by several existing text-to-HTML
filters – including [Setext] &lt;a href=&quot;http://docutils.sourceforge.net/mirror/setext.html&quot;&gt;1&lt;/a&gt;, [atx] &lt;a href=&quot;http://www.aaronsw.com/2002/atx/&quot;&gt;2&lt;/a&gt;, [Textile] &lt;a href=&quot;http://textism.com/tools/textile/&quot;&gt;3&lt;/a&gt;, [reStructuredText] &lt;a href=&quot;http://docutils.sourceforge.net/rst.html&quot;&gt;4&lt;/a&gt;,
[Grutatext] &lt;a href=&quot;http://www.triptico.com/software/grutatxt.html&quot;&gt;5&lt;/a&gt;, and [EtText] &lt;a href=&quot;http://ettext.taint.org/doc/&quot;&gt;6&lt;/a&gt; – the single biggest source of
inspiration for Markdown’s syntax is the format of plain text email.&lt;/p&gt;
&lt;p&gt;To this end, Markdown’s syntax is comprised entirely of punctuation
characters, which punctuation characters have been carefully chosen so
as to look like what they mean. E.g., asterisks around a word actually
look like *emphasis*. Markdown lists look like, well, lists. Even
blockquotes look like quoted passages of text, assuming you’ve ever
used email.&lt;/p&gt;</summary>
    
    
    
    
    <category term="Test" scheme="https://unlimited-code.works/tags/test/"/>
    
    <category term="Markdown" scheme="https://unlimited-code.works/tags/markdown/"/>
    
  </entry>
  
</feed>
