<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BillWSY的生活 &#187; 代码</title>
	<atom:link href="http://www.billwsy.com/tag/%e4%bb%a3%e7%a0%81/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.billwsy.com</link>
	<description>BillWSY - 写下我生活中的点滴</description>
	<lastBuildDate>Thu, 01 Dec 2011 09:10:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>贴代码</title>
		<link>http://www.billwsy.com/2009/03/oi-code/</link>
		<comments>http://www.billwsy.com/2009/03/oi-code/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 09:34:26 +0000</pubDate>
		<dc:creator>BillWSY</dc:creator>
				<category><![CDATA[代码如诗]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[信息学奥赛]]></category>

		<guid isPermaLink="false">http://www.billwsy.com/?p=26</guid>
		<description><![CDATA[这是一篇代码大杂烩，原来的博客里分成了好多篇发布。这次博客重整，把它们全合成了一篇。请点下面的链接进入阅读。代码较多，请耐心等待。



贴代码—排序算法

<span class="readmore"><a href="http://www.billwsy.com/2009/03/oi-code/" title="贴代码">阅读全文——共515字</a></span>]]></description>
			<content:encoded><![CDATA[<p>这是一篇代码大杂烩，原来的博客里分成了好多篇发布。这次博客重整，把它们全合成了一篇。请点下面的链接进入阅读。代码较多，请耐心等待。<br />
<span id="more-26"></span></p>
<p><strong>贴代码—排序算法</strong></p>
<p>马上就要省选了，这几天练习基础算法。排序是基础中的基础，所以先写排序代码。下面的代码基本上用了模板，所以应该是能广泛适用的。（只要重载小于操作符就可以了）当然这里都是最简单的排序算法，放在这里也仅仅是用来备忘。代码巨丑，看之前做好心理准备。</p>
<p>数据产生器</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code22'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2622"><td class="code" id="p26code22"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;ctime&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">srand</span><span style="color: #008000;">&#40;</span> <span style="color: #0000dd;">time</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">NULL</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> n<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span> <span style="color: #FF0000;">&quot;%d&quot;</span> , <span style="color: #000040;">&amp;</span>n <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">FILE</span><span style="color: #000040;">*</span> fout <span style="color: #000080;">=</span> <span style="color: #0000dd;">fopen</span><span style="color: #008000;">&#40;</span> <span style="color: #FF0000;">&quot;sort.in&quot;</span> , <span style="color: #FF0000;">&quot;w&quot;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">fprintf</span><span style="color: #008000;">&#40;</span> fout , <span style="color: #FF0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> , n <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">fprintf</span><span style="color: #008000;">&#40;</span> fout , <span style="color: #FF0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> , <span style="color: #0000dd;">rand</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">%</span> <span style="color: #0000dd;">100000</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">fclose</span><span style="color: #008000;">&#40;</span> fout <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>冒泡排序</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code23'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2623"><td class="code" id="p26code23"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">template</span> <span style="color: #000080;">&lt;</span> <span style="color: #0000ff;">typename</span> T <span style="color: #000080;">&gt;</span> <span style="color: #0000ff;">void</span> bubSort<span style="color: #008000;">&#40;</span> T<span style="color: #000040;">*</span> arr , <span style="color: #0000ff;">int</span> st , <span style="color: #0000ff;">int</span> ed <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> st <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> ed <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> j <span style="color: #000080;">=</span> ed <span style="color: #008080;">;</span> j <span style="color: #000080;">&gt;</span> i <span style="color: #008080;">;</span> <span style="color: #000040;">--</span> j <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> arr<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;</span> arr<span style="color: #008000;">&#91;</span> j <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                T t <span style="color: #000080;">=</span> arr<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                arr<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> arr<span style="color: #008000;">&#91;</span> j <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                arr<span style="color: #008000;">&#91;</span> j <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> t<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>选择排序</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code24'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2624"><td class="code" id="p26code24"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">template</span> <span style="color: #000080;">&lt;</span> <span style="color: #0000ff;">typename</span> T <span style="color: #000080;">&gt;</span> <span style="color: #0000ff;">void</span> selSort<span style="color: #008000;">&#40;</span> T<span style="color: #000040;">*</span> arr , <span style="color: #0000ff;">int</span> st , <span style="color: #0000ff;">int</span> ed <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> st <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> ed <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> j <span style="color: #000080;">=</span> i <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> j <span style="color: #000080;">&lt;=</span> ed <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> j <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> arr<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;</span> arr<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                T t <span style="color: #000080;">=</span> arr<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                arr<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> arr<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                arr<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> t<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>插入排序</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code25'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2625"><td class="code" id="p26code25"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">template</span> <span style="color: #000080;">&lt;</span> <span style="color: #0000ff;">typename</span> T <span style="color: #000080;">&gt;</span> <span style="color: #0000ff;">void</span> insSort<span style="color: #008000;">&#40;</span> T<span style="color: #000040;">*</span> arr , <span style="color: #0000ff;">int</span> st , <span style="color: #0000ff;">int</span> ed <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> st <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> ed <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">int</span> j <span style="color: #000080;">=</span> i<span style="color: #008080;">;</span> T cur <span style="color: #000080;">=</span> arr<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span> cur <span style="color: #000080;">&lt;</span> arr<span style="color: #008000;">&#91;</span> j <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            arr<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> arr<span style="color: #008000;">&#91;</span> j <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            <span style="color: #000040;">--</span> j<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        arr<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> cur<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>快速排序</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code26'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2626"><td class="code" id="p26code26"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">template</span> <span style="color: #000080;">&lt;</span> <span style="color: #0000ff;">typename</span> T <span style="color: #000080;">&gt;</span> <span style="color: #0000ff;">void</span> qSort<span style="color: #008000;">&#40;</span> T<span style="color: #000040;">*</span> arr , <span style="color: #0000ff;">int</span> st , <span style="color: #0000ff;">int</span> ed <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> st , j <span style="color: #000080;">=</span> ed<span style="color: #008080;">;</span> T mid <span style="color: #000080;">=</span> arr<span style="color: #008000;">&#91;</span> <span style="color: #008000;">&#40;</span> st <span style="color: #000040;">+</span> ed <span style="color: #008000;">&#41;</span> <span style="color: #000040;">/</span> <span style="color: #0000dd;">2</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">do</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span> arr<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;</span> mid <span style="color: #008000;">&#41;</span> <span style="color: #000040;">++</span> i<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span> mid <span style="color: #000080;">&lt;</span> arr<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #000040;">--</span> j<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> i <span style="color: #000080;">&lt;=</span> j <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            T  t <span style="color: #000080;">=</span> arr<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> arr<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> arr<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> arr<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> t<span style="color: #008080;">;</span>
            <span style="color: #000040;">++</span> i<span style="color: #008080;">;</span> <span style="color: #000040;">--</span> j<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span> i <span style="color: #000080;">&lt;=</span> j <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> st <span style="color: #000080;">&lt;</span> j <span style="color: #008000;">&#41;</span> qSort<span style="color: #008000;">&#40;</span> arr , st , j <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> i <span style="color: #000080;">&lt;</span> ed <span style="color: #008000;">&#41;</span> qSort<span style="color: #008000;">&#40;</span> arr , i , ed <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>归并排序，这里写得不好，见谅。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code27'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2627"><td class="code" id="p26code27"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">int</span> tmp<span style="color: #008000;">&#91;</span> MAX_N <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">template</span> <span style="color: #000080;">&lt;</span> <span style="color: #0000ff;">typename</span> T <span style="color: #000080;">&gt;</span> <span style="color: #0000ff;">void</span> mergeSort<span style="color: #008000;">&#40;</span> T<span style="color: #000040;">*</span> arr , <span style="color: #0000ff;">int</span> st , <span style="color: #0000ff;">int</span> ed <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> st <span style="color: #000080;">&gt;=</span> ed <span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> mid <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span> st <span style="color: #000040;">+</span> ed <span style="color: #008000;">&#41;</span> <span style="color: #000040;">/</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
    mergeSort<span style="color: #008000;">&#40;</span> arr , st , mid <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    mergeSort<span style="color: #008000;">&#40;</span> arr , mid <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> , ed <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> st <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> ed<span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> tmp<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> arr<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> h1 <span style="color: #000080;">=</span> st , h2 <span style="color: #000080;">=</span> mid <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> , cur <span style="color: #000080;">=</span> st<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span> cur <span style="color: #000080;">&lt;=</span> ed <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>  tmp<span style="color: #008000;">&#91;</span> h1 <span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;</span> tmp<span style="color: #008000;">&#91;</span> h2 <span style="color: #008000;">&#93;</span> <span style="color: #000040;">&amp;&amp;</span> h1 <span style="color: #000080;">&lt;=</span> mid <span style="color: #000040;">||</span> h2 <span style="color: #000080;">&gt;</span> ed <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            arr<span style="color: #008000;">&#91;</span> cur<span style="color: #000040;">++</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> tmp<span style="color: #008000;">&#91;</span> h1 <span style="color: #000040;">++</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
            arr<span style="color: #008000;">&#91;</span> cur<span style="color: #000040;">++</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> tmp<span style="color: #008000;">&#91;</span> h2 <span style="color: #000040;">++</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>堆排序，只有上浮下沉的过程，怎么实现排序请查找相关资料。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code28'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2628"><td class="code" id="p26code28"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">template</span><span style="color: #000080;">&lt;</span> <span style="color: #0000ff;">typename</span> T <span style="color: #000080;">&gt;</span> <span style="color: #0000ff;">void</span> sink<span style="color: #008000;">&#40;</span> T<span style="color: #000040;">*</span> heap , <span style="color: #0000ff;">int</span> len , <span style="color: #0000ff;">int</span> k <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span> k <span style="color: #000040;">*</span> <span style="color: #0000dd;">2</span> <span style="color: #000080;">&lt;=</span> len <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">int</span> cur <span style="color: #000080;">=</span> k <span style="color: #000040;">*</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #000080;">&lt;=</span> len <span style="color: #000040;">&amp;&amp;</span> heap<span style="color: #008000;">&#91;</span> cur <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;</span> heap<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #000040;">++</span> cur<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> heap<span style="color: #008000;">&#91;</span> k <span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;=</span> heap<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
        T t <span style="color: #000080;">=</span> heap<span style="color: #008000;">&#91;</span> k <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        heap<span style="color: #008000;">&#91;</span> k <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> heap<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        heap<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> t<span style="color: #008080;">;</span>
        k <span style="color: #000080;">=</span> cur<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">template</span><span style="color: #000080;">&lt;</span> <span style="color: #0000ff;">typename</span> T <span style="color: #000080;">&gt;</span> <span style="color: #0000ff;">void</span> swim<span style="color: #008000;">&#40;</span> T<span style="color: #000040;">*</span> heap , <span style="color: #0000ff;">int</span> len , <span style="color: #0000ff;">int</span> k <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span> k <span style="color: #000080;">&gt;</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">int</span> cur <span style="color: #000080;">=</span> k <span style="color: #000040;">/</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
        k <span style="color: #000080;">=</span> cur <span style="color: #000040;">*</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> k <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #000080;">&lt;=</span> len <span style="color: #000040;">&amp;&amp;</span> heap<span style="color: #008000;">&#91;</span> k <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;</span> heap<span style="color: #008000;">&#91;</span> k <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #000040;">++</span> k<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> heap<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;=</span> heap <span style="color: #008000;">&#91;</span> k <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
        T t <span style="color: #000080;">=</span> heap<span style="color: #008000;">&#91;</span> k <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        heap<span style="color: #008000;">&#91;</span> k <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> heap<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        heap<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> t<span style="color: #008080;">;</span>
        k <span style="color: #000080;">=</span> cur<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>线性排序没怎么写，只有一个没有通用性的计数排序，在这里就不贴了。</p>
<p><strong>贴代码—网络流及二分图匹配</strong></p>
<p>今天写了不少，明天还有最后一天，我要把能写的都写写完，准备上战场啦！这里是网络流/匹配。</p>
<p>二分图最大匹配：匈牙利算法</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code29'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2629"><td class="code" id="p26code29"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">int</span> n , m<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">bool</span> map<span style="color: #008000;">&#91;</span> MAX_N <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span> MAX_M <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> lLink<span style="color: #008000;">&#91;</span> MAX_N <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span> , rLink<span style="color: #008000;">&#91;</span> MAX_M <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">bool</span> vis<span style="color: #008000;">&#91;</span> MAX_M <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</span> extPath<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> cur <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> m <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> <span style="color: #000040;">!</span>vis<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000040;">&amp;&amp;</span> map<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
            vis<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> rLink<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #000040;">||</span> extPath<span style="color: #008000;">&#40;</span> rLink<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                lLink<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> i<span style="color: #008080;">;</span>
                rLink<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> cur<span style="color: #008080;">;</span>
                <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> match<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> ans <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> j <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> j <span style="color: #000080;">&lt;=</span> m <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> j <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> map<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #000040;">&amp;&amp;</span> rLink<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                lLink<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> j<span style="color: #008080;">;</span>
                rLink<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> i<span style="color: #008080;">;</span>
                <span style="color: #000040;">++</span> ans<span style="color: #008080;">;</span>
                <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> lLink<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">memset</span><span style="color: #008000;">&#40;</span> vis , <span style="color: #0000dd;">0</span> , <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span> vis <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> extPath<span style="color: #008000;">&#40;</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                <span style="color: #000040;">++</span> ans<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">return</span> ans<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>最大流：Dinic算法</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code30'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2630"><td class="code" id="p26code30"><pre class="cpp" style="font-family:monospace;">&nbsp;
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> INF <span style="color: #000080;">=</span> <span style="color: #0000dd;">10000000</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAX_V <span style="color: #000080;">=</span> <span style="color: #0000dd;">1000</span> , MAX_E <span style="color: #000080;">=</span> MAX_V <span style="color: #000040;">*</span> MAX_V<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">struct</span> Edge
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> to , cap<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> bro, next<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span> edge<span style="color: #008000;">&#91;</span> MAX_E <span style="color: #000040;">*</span> <span style="color: #0000dd;">2</span> <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> eCnt<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> hLink<span style="color: #008000;">&#91;</span> MAX_V <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">void</span> _ins<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> from , <span style="color: #0000ff;">int</span> to , <span style="color: #0000ff;">int</span> cap , <span style="color: #0000ff;">int</span> bro <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #000040;">++</span> eCnt<span style="color: #008080;">;</span>
    edge<span style="color: #008000;">&#91;</span> eCnt <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">to</span> <span style="color: #000080;">=</span> to<span style="color: #008080;">;</span> edge<span style="color: #008000;">&#91;</span> eCnt <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">bro</span> <span style="color: #000080;">=</span> bro<span style="color: #008080;">;</span>
    edge<span style="color: #008000;">&#91;</span> eCnt <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">cap</span> <span style="color: #000080;">=</span> cap<span style="color: #008080;">;</span>
    edge<span style="color: #008000;">&#91;</span> eCnt <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">next</span> <span style="color: #000080;">=</span> hLink<span style="color: #008000;">&#91;</span> from <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> hLink<span style="color: #008000;">&#91;</span> from <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> eCnt<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> ins<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> from , <span style="color: #0000ff;">int</span> to , <span style="color: #0000ff;">int</span> cap <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    _ins<span style="color: #008000;">&#40;</span> from , to , cap , eCnt <span style="color: #000040;">+</span> <span style="color: #0000dd;">2</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    _ins<span style="color: #008000;">&#40;</span> to , from , <span style="color: #0000dd;">0</span> , eCnt <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> S , T<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> level<span style="color: #008000;">&#91;</span> MAX_V <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> queue<span style="color: #008000;">&#91;</span> MAX_V <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">bool</span> BFS<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">memset</span><span style="color: #008000;">&#40;</span> level , <span style="color: #0000dd;">0</span> , <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span> level <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> head <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span> , tail <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    queue<span style="color: #008000;">&#91;</span> head <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> S<span style="color: #008080;">;</span> level<span style="color: #008000;">&#91;</span> S <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> head <span style="color: #000040;">!</span><span style="color: #000080;">=</span> tail <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">int</span> cur <span style="color: #000080;">=</span> queue<span style="color: #008000;">&#91;</span> head <span style="color: #000040;">++</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> hLink<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> i <span style="color: #008080;">;</span> i <span style="color: #000080;">=</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">next</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">cap</span> <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">int</span> nxt <span style="color: #000080;">=</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">to</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> level<span style="color: #008000;">&#91;</span> nxt <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
            level<span style="color: #008000;">&#91;</span> nxt <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> level<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
            queue<span style="color: #008000;">&#91;</span> tail <span style="color: #000040;">++</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> nxt<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> level<span style="color: #008000;">&#91;</span> T <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> stack<span style="color: #008000;">&#91;</span> MAX_V <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> reach<span style="color: #008000;">&#91;</span> MAX_V <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> last<span style="color: #008000;">&#91;</span> MAX_V <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> _maxFlow<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">void</span> DFS<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> top <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    stack<span style="color: #008000;">&#91;</span> top <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> S<span style="color: #008080;">;</span>
    last<span style="color: #008000;">&#91;</span> top <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> hLink<span style="color: #008000;">&#91;</span> S <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> top <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> stack<span style="color: #008000;">&#91;</span> top <span style="color: #008000;">&#93;</span> <span style="color: #000040;">!</span><span style="color: #000080;">=</span> T <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">bool</span> noUse <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> last<span style="color: #008000;">&#91;</span> top <span style="color: #008000;">&#93;</span> <span style="color: #008080;">;</span> i <span style="color: #008080;">;</span> i <span style="color: #000080;">=</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">next</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">cap</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                    last<span style="color: #008000;">&#91;</span> top <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">next</span><span style="color: #008080;">;</span>
                    <span style="color: #0000ff;">int</span> nxt <span style="color: #000080;">=</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">to</span><span style="color: #008080;">;</span>
                    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> level<span style="color: #008000;">&#91;</span> nxt <span style="color: #008000;">&#93;</span> <span style="color: #000040;">!</span><span style="color: #000080;">=</span> level<span style="color: #008000;">&#91;</span> stack<span style="color: #008000;">&#91;</span> top <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
                    stack<span style="color: #008000;">&#91;</span> <span style="color: #000040;">++</span> top <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> nxt<span style="color: #008080;">;</span>
                    reach<span style="color: #008000;">&#91;</span> top <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> i<span style="color: #008080;">;</span>
                    last<span style="color: #008000;">&#91;</span> top <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> hLink<span style="color: #008000;">&#91;</span> nxt <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                    noUse <span style="color: #000080;">=</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
                    <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> noUse <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                level<span style="color: #008000;">&#91;</span> stack<span style="color: #008000;">&#91;</span> top <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
                <span style="color: #000040;">--</span> top<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">int</span> minVol <span style="color: #000080;">=</span> INF<span style="color: #008080;">;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> top <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> edge<span style="color: #008000;">&#91;</span> reach<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">cap</span> <span style="color: #000080;">&lt;</span> minVol <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                    minVol <span style="color: #000080;">=</span> edge<span style="color: #008000;">&#91;</span> reach<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">cap</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> top<span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                edge<span style="color: #008000;">&#91;</span> reach<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">cap</span> <span style="color: #000040;">-</span><span style="color: #000080;">=</span> minVol<span style="color: #008080;">;</span>
                edge<span style="color: #008000;">&#91;</span> edge<span style="color: #008000;">&#91;</span> reach<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">bro</span> <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">cap</span> <span style="color: #000040;">+</span><span style="color: #000080;">=</span> minVol<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            _maxFlow <span style="color: #000040;">+</span><span style="color: #000080;">=</span> minVol<span style="color: #008080;">;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> top<span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> edge<span style="color: #008000;">&#91;</span> reach<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">cap</span> <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                    top <span style="color: #000080;">=</span> i <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> maxFlow<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    _maxFlow <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> BFS<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        DFS<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> _maxFlow<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>其实这里还缺KM和费用流。KM压根不会，费用流就写个最短增广路吧，<a href="http://www.billwsy.com/mincost-maxflow/">这里</a>曾经贴过。</p>
<p>重视代码重用是个好习惯。等哪天转ACM了应该会有不少优势。已经开始憧憬ACM了，让我考好点，去趟NOI早点把大学定掉开始ACM吧！</p>
<p><strong>贴代码—数学算法</strong></p>
<p>欧几里德算法、扩展欧几里德算法</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code31'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2631"><td class="code" id="p26code31"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">void</span> extendEuclid<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> a , <span style="color: #0000ff;">int</span> b , <span style="color: #0000ff;">int</span><span style="color: #000040;">&amp;</span> x , <span style="color: #0000ff;">int</span><span style="color: #000040;">&amp;</span> y <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> b <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        x <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> , y <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">int</span> tx , ty<span style="color: #008080;">;</span>
        extendEuclid<span style="color: #008000;">&#40;</span> b , a <span style="color: #000040;">%</span> b , tx , ty <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        x <span style="color: #000080;">=</span> ty<span style="color: #008080;">;</span> y <span style="color: #000080;">=</span> tx <span style="color: #000040;">-</span> <span style="color: #008000;">&#40;</span> a <span style="color: #000040;">/</span> b <span style="color: #008000;">&#41;</span> <span style="color: #000040;">*</span> ty<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> gcd<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> a , <span style="color: #0000ff;">int</span> b <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">return</span> b <span style="color: #008080;">?</span> gcd<span style="color: #008000;">&#40;</span> b , a <span style="color: #000040;">%</span> b <span style="color: #008000;">&#41;</span> <span style="color: #008080;">:</span> a<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>判断是否是素数</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code32'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2632"><td class="code" id="p26code32"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;fstream&gt;</span>
&nbsp;
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAX_N <span style="color: #000080;">=</span> <span style="color: #0000dd;">1000000</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">bool</span> able<span style="color: #008000;">&#91;</span> MAX_N <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> pList<span style="color: #008000;">&#91;</span> MAX_N <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> <span style="color: #0000ff;">int</span> pCnt<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> MAX_N <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> able<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> MAX_N <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> able<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> pList<span style="color: #008000;">&#91;</span> <span style="color: #000040;">++</span>pCnt <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> i<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> j <span style="color: #000080;">=</span> i <span style="color: #000040;">+</span> i <span style="color: #008080;">;</span> j <span style="color: #000080;">&lt;=</span> MAX_N <span style="color: #008080;">;</span> j <span style="color: #000040;">+</span><span style="color: #000080;">=</span> i <span style="color: #008000;">&#41;</span> able<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">int</span> n<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> n<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span> n <span style="color: #000080;">&gt;=</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">bool</span> flag <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> pCnt <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> n <span style="color: #000080;">&lt;</span> pList<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000040;">*</span> pList<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> n <span style="color: #000040;">%</span> pList<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                flag <span style="color: #000080;">=</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
                <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #008000;">&#40;</span> flag <span style="color: #008080;">?</span> <span style="color: #FF0000;">&quot;YES<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008080;">:</span> <span style="color: #FF0000;">&quot;NO<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> n<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span> <span style="color: #FF0000;">&quot;pause&quot;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>高斯消元法</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code33'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2633"><td class="code" id="p26code33"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
&nbsp;
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAX_N <span style="color: #000080;">=</span> <span style="color: #0000dd;">100</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> n , m<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">struct</span> Arr
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">double</span> data<span style="color: #008000;">&#91;</span> MAX_N <span style="color: #000040;">+</span> <span style="color: #0000dd;">2</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">double</span><span style="color: #000040;">&amp;</span> operator<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> ind <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">return</span> data<span style="color: #008000;">&#91;</span> ind <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span> equ<span style="color: #008000;">&#91;</span> MAX_N <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">void</span> input<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> n<span style="color: #008080;">;</span> m <span style="color: #000080;">=</span> n <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> j <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> j <span style="color: #000080;">&lt;=</span> m <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> j <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> equ<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> makeZero<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> std , <span style="color: #0000ff;">int</span> cur <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">double</span> k <span style="color: #000080;">=</span> equ<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span> std <span style="color: #008000;">&#93;</span> <span style="color: #000040;">/</span> equ<span style="color: #008000;">&#91;</span> std <span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span> std <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> std <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> m <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        equ<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000040;">-</span><span style="color: #000080;">=</span> equ<span style="color: #008000;">&#91;</span> std <span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000040;">*</span> k<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> process<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> cur <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> maxFrom <span style="color: #000080;">=</span> cur<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> cur <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> <span style="color: #0000dd;">abs</span><span style="color: #008000;">&#40;</span> equ<span style="color: #008000;">&#91;</span> maxFrom <span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #000080;">&lt;</span> <span style="color: #0000dd;">abs</span><span style="color: #008000;">&#40;</span> equ<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            maxFrom <span style="color: #000080;">=</span> i<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> maxFrom <span style="color: #000040;">!</span><span style="color: #000080;">=</span> cur <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        Arr t <span style="color: #000080;">=</span> equ<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        equ<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> equ<span style="color: #008000;">&#91;</span> maxFrom <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        equ<span style="color: #008000;">&#91;</span> maxFrom <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> t<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> cur <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        makeZero<span style="color: #008000;">&#40;</span> cur , i <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">double</span> ans<span style="color: #008000;">&#91;</span> MAX_N <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">void</span> getAns<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> cur <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">double</span> rtn <span style="color: #000080;">=</span> equ<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span> m <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> n <span style="color: #008080;">;</span> i <span style="color: #000080;">&gt;</span> cur <span style="color: #008080;">;</span> <span style="color: #000040;">--</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        rtn <span style="color: #000040;">-</span><span style="color: #000080;">=</span> equ<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000040;">*</span> ans<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    rtn <span style="color: #000040;">/</span><span style="color: #000080;">=</span> equ<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> <span style="color: #0000dd;">abs</span><span style="color: #008000;">&#40;</span> rtn <span style="color: #008000;">&#41;</span> <span style="color: #000080;">&lt;</span> <span style="color:#800080;">1e-6</span> <span style="color: #008000;">&#41;</span> rtn <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    ans<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> rtn<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    input<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        process<span style="color: #008000;">&#40;</span> i <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> n <span style="color: #008080;">;</span> i <span style="color: #000080;">&gt;=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> <span style="color: #000040;">--</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        getAns<span style="color: #008000;">&#40;</span> i <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">cout</span>.<span style="color: #007788;">precision</span><span style="color: #008000;">&#40;</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> fixed<span style="color: #008080;">;</span>
        <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> ans<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #008000;">&#40;</span> i <span style="color: #000080;">==</span> n <span style="color: #008080;">?</span> <span style="color: #FF0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008080;">:</span> <span style="color: #FF0000;">&quot; &quot;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>贴代码—凸壳</strong></p>
<p>计算几何都不怎么会，有些知道的从来没写过。唯一会的只有这个凸壳了。这是USACO 5.1 Fencing the Cows的代码，算法是Graham扫描法。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code34'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2634"><td class="code" id="p26code34"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;fstream&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
&nbsp;
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
ifstream fin<span style="color: #008000;">&#40;</span> <span style="color: #FF0000;">&quot;fc.in&quot;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
ofstream fout<span style="color: #008000;">&#40;</span> <span style="color: #FF0000;">&quot;fc.out&quot;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">struct</span> Point
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">double</span> x , y<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">double</span> dis<span style="color: #008000;">&#40;</span> Point a , Point b <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">sqrt</span><span style="color: #008000;">&#40;</span> <span style="color: #008000;">&#40;</span> a .<span style="color: #007788;">x</span> <span style="color: #000040;">-</span> b.<span style="color: #007788;">x</span> <span style="color: #008000;">&#41;</span> <span style="color: #000040;">*</span> <span style="color: #008000;">&#40;</span> a .<span style="color: #007788;">x</span> <span style="color: #000040;">-</span> b.<span style="color: #007788;">x</span> <span style="color: #008000;">&#41;</span> <span style="color: #000040;">+</span> <span style="color: #008000;">&#40;</span> a .<span style="color: #007788;">y</span> <span style="color: #000040;">-</span> b.<span style="color: #007788;">y</span> <span style="color: #008000;">&#41;</span> <span style="color: #000040;">*</span> <span style="color: #008000;">&#40;</span> a .<span style="color: #007788;">y</span> <span style="color: #000040;">-</span> b.<span style="color: #007788;">y</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
Point operator<span style="color: #000040;">-</span> <span style="color: #008000;">&#40;</span> Point a , Point b <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    Point rtn<span style="color: #008080;">;</span>
    rtn.<span style="color: #007788;">x</span> <span style="color: #000080;">=</span> a.<span style="color: #007788;">x</span> <span style="color: #000040;">-</span> b.<span style="color: #007788;">x</span><span style="color: #008080;">;</span>
    rtn.<span style="color: #007788;">y</span> <span style="color: #000080;">=</span> a.<span style="color: #007788;">y</span> <span style="color: #000040;">-</span> b.<span style="color: #007788;">y</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> rtn<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">double</span> crossProduct<span style="color: #008000;">&#40;</span> Point a , Point b <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">return</span> a.<span style="color: #007788;">x</span> <span style="color: #000040;">*</span> b.<span style="color: #007788;">y</span> <span style="color: #000040;">-</span> b.<span style="color: #007788;">x</span> <span style="color: #000040;">*</span> a.<span style="color: #007788;">y</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
Point pStd<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">bool</span> operator<span style="color: #000080;">&lt;</span><span style="color: #008000;">&#40;</span> Point a, Point b <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">return</span> crossProduct<span style="color: #008000;">&#40;</span> a <span style="color: #000040;">-</span> pStd , b <span style="color: #000040;">-</span> pStd <span style="color: #008000;">&#41;</span> <span style="color: #000080;">&gt;</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">template</span><span style="color: #000080;">&lt;</span> <span style="color: #0000ff;">typename</span> T <span style="color: #000080;">&gt;</span><span style="color: #0000ff;">void</span> qSort<span style="color: #008000;">&#40;</span> T<span style="color: #000040;">*</span> arr , <span style="color: #0000ff;">int</span> st , <span style="color: #0000ff;">int</span> ed <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> st , j <span style="color: #000080;">=</span> ed<span style="color: #008080;">;</span>
    T mid <span style="color: #000080;">=</span> arr<span style="color: #008000;">&#91;</span> <span style="color: #008000;">&#40;</span> st <span style="color: #000040;">+</span> ed <span style="color: #008000;">&#41;</span> <span style="color: #000040;">/</span> <span style="color: #0000dd;">2</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> i <span style="color: #000080;">&lt;=</span> j <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> arr<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;</span> mid <span style="color: #008000;">&#41;</span> <span style="color: #000040;">++</span> i<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> mid <span style="color: #000080;">&lt;</span> arr<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #000040;">--</span> j<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> i <span style="color: #000080;">&lt;=</span> j <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            T t <span style="color: #000080;">=</span> arr<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> arr<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> arr<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> arr<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> t<span style="color: #008080;">;</span>
            <span style="color: #000040;">++</span> i<span style="color: #008080;">;</span> <span style="color: #000040;">--</span> j<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> i <span style="color: #000080;">&lt;=</span> j <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> st <span style="color: #000080;">&lt;</span> j <span style="color: #008000;">&#41;</span> qSort<span style="color: #008000;">&#40;</span> arr , st , j <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> i <span style="color: #000080;">&lt;</span> ed <span style="color: #008000;">&#41;</span> qSort<span style="color: #008000;">&#40;</span> arr , i , ed <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAX_N <span style="color: #000080;">=</span> <span style="color: #0000dd;">10000</span><span style="color: #008080;">;</span>
Point points<span style="color: #008000;">&#91;</span> MAX_N <span style="color: #000040;">+</span> <span style="color: #0000dd;">2</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> n<span style="color: #008080;">;</span>
&nbsp;
Point stack<span style="color: #008000;">&#91;</span> MAX_N <span style="color: #000040;">+</span> <span style="color: #0000dd;">2</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    fin <span style="color: #000080;">&gt;&gt;</span> n<span style="color: #008080;">;</span>
    fin <span style="color: #000080;">&gt;&gt;</span> points<span style="color: #008000;">&#91;</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">x</span> <span style="color: #000080;">&gt;&gt;</span> points<span style="color: #008000;">&#91;</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">y</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        fin <span style="color: #000080;">&gt;&gt;</span> points<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">x</span> <span style="color: #000080;">&gt;&gt;</span> points<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">y</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> <span style="color: #008000;">&#40;</span> points<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">x</span> <span style="color: #000080;">&lt;</span> points<span style="color: #008000;">&#91;</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">x</span> <span style="color: #008000;">&#41;</span> <span style="color: #000040;">||</span>
             <span style="color: #008000;">&#40;</span> points<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">x</span> <span style="color: #000080;">==</span> points<span style="color: #008000;">&#91;</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">x</span> <span style="color: #000040;">&amp;&amp;</span> <span style="color: #008000;">&#40;</span> points<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">y</span> <span style="color: #000080;">&lt;</span> points<span style="color: #008000;">&#91;</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">y</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            Point t <span style="color: #000080;">=</span> points<span style="color: #008000;">&#91;</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            points<span style="color: #008000;">&#91;</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> points<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            points<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> t<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    pStd <span style="color: #000080;">=</span> points<span style="color: #008000;">&#91;</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    qSort<span style="color: #008000;">&#40;</span> points , <span style="color: #0000dd;">2</span> , n <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    points<span style="color: #008000;">&#91;</span> <span style="color: #000040;">++</span> n <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> points<span style="color: #008000;">&#91;</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> top <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    stack<span style="color: #008000;">&#91;</span> <span style="color: #000040;">++</span> top <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> points<span style="color: #008000;">&#91;</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> stack<span style="color: #008000;">&#91;</span> <span style="color: #000040;">++</span> top <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> points<span style="color: #008000;">&#91;</span> <span style="color: #0000dd;">2</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #ff0000; font-style: italic;">/*
    for( int i = 1 ; i &lt;= n ; ++ i ) {
        fout &lt;&lt; points[ i ].x &lt;&lt; &quot; &quot; &lt;&lt; points[ i ].y &lt;&lt; endl;
    }
    */</span>
&nbsp;
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">3</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> top <span style="color: #000080;">&gt;=</span> <span style="color: #0000dd;">2</span> <span style="color: #000040;">&amp;&amp;</span> crossProduct<span style="color: #008000;">&#40;</span> stack<span style="color: #008000;">&#91;</span> top <span style="color: #008000;">&#93;</span> <span style="color: #000040;">-</span> stack<span style="color: #008000;">&#91;</span> top <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span> , points<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000040;">-</span> stack<span style="color: #008000;">&#91;</span> top <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #000080;">&lt;</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #000040;">--</span> top<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        stack<span style="color: #008000;">&#91;</span> <span style="color: #000040;">++</span> top <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> points<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">double</span> ans <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> top <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        ans <span style="color: #000040;">+</span><span style="color: #000080;">=</span> dis<span style="color: #008000;">&#40;</span> stack<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> , stack<span style="color: #008000;">&#91;</span> i <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    fout.<span style="color: #007788;">precision</span><span style="color: #008000;">&#40;</span> <span style="color: #0000dd;">2</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> fout <span style="color: #000080;">&lt;&lt;</span> fixed<span style="color: #008080;">;</span>
    fout <span style="color: #000080;">&lt;&lt;</span> ans <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
    fin.<span style="color: #007788;">close</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    fout.<span style="color: #007788;">close</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>贴代码—KMP</strong></p>
<p>本来应该是个字符串大杂烩的，可惜不会扩展KMP、自动机、后缀数组这些强大的东西，弱弱地贴个KMP，供大家鄙视。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code35'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2635"><td class="code" id="p26code35"><pre class="cpp" style="font-family:monospace;">&nbsp;
<span style="color: #000080;">&lt;</span>pre lang<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;cpp&quot;</span> colla<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;-&quot;</span><span style="color: #000080;">&gt;</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;string&gt;</span>
&nbsp;
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
string mod , str<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAX_N <span style="color: #000080;">=</span> <span style="color: #0000dd;">1000000</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> n , m<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> next<span style="color: #008000;">&#91;</span> MAX_N <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">void</span> getNext<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> , j <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> i <span style="color: #000080;">&lt;=</span> m <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> j <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #000040;">||</span> mod<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">==</span> mod<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #000040;">++</span> i<span style="color: #008080;">;</span> <span style="color: #000040;">++</span> j<span style="color: #008080;">;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> mod<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">==</span> mod<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                next<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> next<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
                next<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> j<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
            j <span style="color: #000080;">=</span> next<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
string<span style="color: #008080;">::</span><span style="color: #007788;">size_type</span> pos<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> j <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #000040;">&amp;&amp;</span> j <span style="color: #000080;">&lt;=</span> m <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> str<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">==</span> mod<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #000040;">||</span> j <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #000040;">++</span> i<span style="color: #008080;">;</span> <span style="color: #000040;">++</span> j<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
            j <span style="color: #000080;">=</span> next<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> j <span style="color: #000080;">&gt;</span> m <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">return</span> i <span style="color: #000040;">-</span> j <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">return</span> string<span style="color: #008080;">::</span><span style="color: #007788;">npos</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;Knuth-Morris-Pratt Algorithm Test&quot;</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;Input : String Mod_String Starting_Pos&quot;</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> str <span style="color: #000080;">&gt;&gt;</span> mod<span style="color: #008080;">;</span>
    n <span style="color: #000080;">=</span> str.<span style="color: #007788;">length</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> m <span style="color: #000080;">=</span> mod.<span style="color: #007788;">length</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    str <span style="color: #000080;">=</span> <span style="color: #FF0000;">&quot; &quot;</span> <span style="color: #000040;">+</span> str<span style="color: #008080;">;</span> mod <span style="color: #000080;">=</span> <span style="color: #FF0000;">&quot; &quot;</span> <span style="color: #000040;">+</span> mod<span style="color: #008080;">;</span>
    getNext<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> oriPos<span style="color: #008080;">;</span> <span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> oriPos<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;K-M-P Algorithm  return = &quot;</span> <span style="color: #000080;">&lt;&lt;</span> pos<span style="color: #008000;">&#40;</span> oriPos <span style="color: #008000;">&#41;</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;C++ Class String return = &quot;</span> <span style="color: #000080;">&lt;&lt;</span> str.<span style="color: #007788;">find</span><span style="color: #008000;">&#40;</span> mod.<span style="color: #007788;">substr</span><span style="color: #008000;">&#40;</span> <span style="color: #0000dd;">1</span> , m <span style="color: #008000;">&#41;</span> , oriPos <span style="color: #008000;">&#41;</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">system</span><span style="color: #008000;">&#40;</span> <span style="color: #FF0000;">&quot;pause&quot;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>贴代码—数据结构</strong></p>
<p>明天就要出发了，把这里剩下的贴贴完吧。接下来是数据结构，常用的并查集、堆以及平衡树。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code36'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2636"><td class="code" id="p26code36"><pre class="cpp" style="font-family:monospace;">&nbsp;
堆，好像是是小根堆。
<span style="color: #000080;">&lt;</span>pre lang<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;cpp&quot;</span> colla<span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;-&quot;</span><span style="color: #000080;">&gt;</span>
<span style="color: #0000ff;">template</span><span style="color: #000080;">&lt;</span> <span style="color: #0000ff;">typename</span> T <span style="color: #000080;">&gt;</span><span style="color: #0000ff;">class</span> Heap
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">private</span><span style="color: #008080;">:</span>
        <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAX_N <span style="color: #000080;">=</span> <span style="color: #0000dd;">1000000</span><span style="color: #008080;">;</span>
        T data<span style="color: #008000;">&#91;</span> MAX_N <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">int</span> n<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">void</span> swim<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> cur <span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> cur <span style="color: #000080;">&gt;</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">int</span> fat <span style="color: #000080;">=</span> cur <span style="color: #000040;">/</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
                cur <span style="color: #000080;">=</span> fat <span style="color: #000040;">*</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
                <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> cur <span style="color: #000080;">&lt;</span> n <span style="color: #000040;">&amp;&amp;</span> data<span style="color: #008000;">&#91;</span> cur <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;</span> data<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #000040;">++</span> cur<span style="color: #008080;">;</span>
                <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> data<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;</span> data<span style="color: #008000;">&#91;</span> fat <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                    T t <span style="color: #000080;">=</span> data<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                    data<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> data<span style="color: #008000;">&#91;</span> fat <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                    data<span style="color: #008000;">&#91;</span> fat <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> t<span style="color: #008080;">;</span>
                    cur <span style="color: #000080;">=</span> fat<span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
                    <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0000ff;">void</span> sink<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> cur <span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> cur <span style="color: #000080;">&lt;=</span> n <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">int</span> fat <span style="color: #000080;">=</span> cur<span style="color: #008080;">;</span>
                cur <span style="color: #000040;">*</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
                <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> cur <span style="color: #000080;">&lt;</span> n <span style="color: #000040;">&amp;&amp;</span> data<span style="color: #008000;">&#91;</span> cur <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;</span> data<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #000040;">++</span> cur<span style="color: #008080;">;</span>
                <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> cur <span style="color: #000080;">&lt;=</span> n <span style="color: #000040;">&amp;&amp;</span> data<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;</span> data<span style="color: #008000;">&#91;</span> fat <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                    T t <span style="color: #000080;">=</span> data<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                    data<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> data<span style="color: #008000;">&#91;</span> fat <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                    data<span style="color: #008000;">&#91;</span> fat <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> t<span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
                    <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
        Heap<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            n <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">void</span> ins<span style="color: #008000;">&#40;</span> T node <span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            data<span style="color: #008000;">&#91;</span> <span style="color: #000040;">++</span> n <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> node<span style="color: #008080;">;</span>
            swim<span style="color: #008000;">&#40;</span> n <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        T getMin<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">assert</span><span style="color: #008000;">&#40;</span> n <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">return</span> data<span style="color: #008000;">&#91;</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0000ff;">void</span> delMin<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            data<span style="color: #008000;">&#91;</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> data<span style="color: #008000;">&#91;</span> n <span style="color: #000040;">--</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            sink<span style="color: #008000;">&#40;</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0000ff;">void</span> printAll<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> data<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot; &quot;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span></pre></td></tr></table></div>

<p>并查集</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code37'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2637"><td class="code" id="p26code37"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">class</span> DisjointSet
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">private</span><span style="color: #008080;">:</span>
        <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAX_N <span style="color: #000080;">=</span> <span style="color: #0000dd;">100000</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">int</span> fat<span style="color: #008000;">&#91;</span> MAX_N <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">int</span> stack<span style="color: #008000;">&#91;</span> MAX_N <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
        DisjointSet<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> MAX_N <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                fat<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> i<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">int</span> findSet<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> cur <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">int</span> top <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
            stack<span style="color: #008000;">&#91;</span> top <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> cur<span style="color: #008080;">;</span>
            <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> stack<span style="color: #008000;">&#91;</span> top <span style="color: #008000;">&#93;</span> <span style="color: #000040;">!</span><span style="color: #000080;">=</span> fat<span style="color: #008000;">&#91;</span> stack<span style="color: #008000;">&#91;</span> top <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                stack<span style="color: #008000;">&#91;</span> top <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> fat<span style="color: #008000;">&#91;</span> stack<span style="color: #008000;">&#91;</span> top <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> <span style="color: #000040;">++</span> top<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">int</span> rtn <span style="color: #000080;">=</span> stack<span style="color: #008000;">&#91;</span> top <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> top <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> fat<span style="color: #008000;">&#91;</span> stack<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> rtn<span style="color: #008080;">;</span>
            <span style="color: #0000ff;">return</span> rtn<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">bool</span> isSame<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> a , <span style="color: #0000ff;">int</span> b <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">return</span> findSet<span style="color: #008000;">&#40;</span> a <span style="color: #008000;">&#41;</span> <span style="color: #000080;">==</span> findSet<span style="color: #008000;">&#40;</span> b <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">void</span> unionSet<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> a , <span style="color: #0000ff;">int</span> b <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">int</span> fatA <span style="color: #000080;">=</span> findSet<span style="color: #008000;">&#40;</span> a <span style="color: #008000;">&#41;</span> , fatB <span style="color: #000080;">=</span> findSet<span style="color: #008000;">&#40;</span> b <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            fat<span style="color: #008000;">&#91;</span> fatA <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> fatB<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span></pre></td></tr></table></div>

<p>平衡树，Treap，见<a href="http://www.billwsy.com/2009/02/treap-intro/">这里</a>。</p>
<p><strong>贴代码—基础图论算法</strong></p>
<p>这是贴代码系列的最后一部分，也是最最丑的一部分。因为放在这里仅供备忘，所以神牛们将就点吧……</p>
<p>图的点数、边数定义、邻接表的插入。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code38'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2638"><td class="code" id="p26code38"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> INF <span style="color: #000080;">=</span> <span style="color: #0000dd;">1000000000</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAX_N <span style="color: #000080;">=</span> <span style="color: #0000dd;">100</span>, MAX_M <span style="color: #000080;">=</span> <span style="color: #0000dd;">100000</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> n , m<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">struct</span> Edge
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> tar , weight<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> next<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span> edge<span style="color: #008000;">&#91;</span> MAX_M <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> lHead<span style="color: #008000;">&#91;</span> MAX_N <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> <span style="color: #0000ff;">int</span> eCnt<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">void</span> ins<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> src , <span style="color: #0000ff;">int</span> tar , <span style="color: #0000ff;">int</span> wei <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #000040;">++</span> eCnt<span style="color: #008080;">;</span>
    edge<span style="color: #008000;">&#91;</span> eCnt <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">next</span> <span style="color: #000080;">=</span> lHead<span style="color: #008000;">&#91;</span> src <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    lHead<span style="color: #008000;">&#91;</span> src <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> eCnt<span style="color: #008080;">;</span>
    edge<span style="color: #008000;">&#91;</span> eCnt <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span> <span style="color: #000080;">=</span> tar<span style="color: #008080;">;</span>
    edge<span style="color: #008000;">&#91;</span> eCnt <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">weight</span> <span style="color: #000080;">=</span> wei<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>图的遍历，深度优先及广度优先搜索</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code39'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2639"><td class="code" id="p26code39"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">void</span> bfs<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> src <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    queue<span style="color: #008000;">&#91;</span> head <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> src<span style="color: #008080;">;</span>
    vis<span style="color: #008000;">&#91;</span> src <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span> head <span style="color: #000040;">!</span><span style="color: #000080;">=</span> tail <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">int</span> cur <span style="color: #000080;">=</span> queue<span style="color: #008000;">&#91;</span> head <span style="color: #000040;">++</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        fout <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;BFS &quot;</span> <span style="color: #000080;">&lt;&lt;</span> cur <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> lHead<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #008080;">;</span> i <span style="color: #008080;">;</span> i <span style="color: #000080;">=</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">next</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> <span style="color: #000040;">!</span>vis<span style="color: #008000;">&#91;</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span> <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                vis<span style="color: #008000;">&#91;</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
                queue<span style="color: #008000;">&#91;</span> tail <span style="color: #000040;">++</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> dfs<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> cur <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    vis<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
    fout <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;DFS &quot;</span> <span style="color: #000080;">&lt;&lt;</span> cur <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> lHead<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #008080;">;</span> i <span style="color: #008080;">;</span> i <span style="color: #000080;">=</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">next</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> <span style="color: #000040;">!</span>vis<span style="color: #008000;">&#91;</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span> <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            dfs<span style="color: #008000;">&#40;</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>最小生成树Prim算法。（突然发现少了Kruskal算法，算了就不写了吧）</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code40'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2640"><td class="code" id="p26code40"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">int</span> dis<span style="color: #008000;">&#91;</span> MAX_N <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> prim<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> src <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> rtn <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> dis<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> INF<span style="color: #008080;">;</span>
    dis<span style="color: #008000;">&#91;</span> src <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">int</span> minID , min <span style="color: #000080;">=</span> INF<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> j <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> j <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> j <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> dis<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;</span> min <span style="color: #000040;">&amp;&amp;</span> <span style="color: #000040;">!</span>vis<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                min <span style="color: #000080;">=</span> dis<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                minID <span style="color: #000080;">=</span> j<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        vis<span style="color: #008000;">&#91;</span> minID <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span> rtn <span style="color: #000040;">+</span><span style="color: #000080;">=</span> dis<span style="color: #008000;">&#91;</span> minID <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> j <span style="color: #000080;">=</span> lHead<span style="color: #008000;">&#91;</span> minID <span style="color: #008000;">&#93;</span> <span style="color: #008080;">;</span> j <span style="color: #008080;">;</span> j <span style="color: #000080;">=</span> edge<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">next</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> edge<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">weight</span> <span style="color: #000080;">&lt;</span> dis<span style="color: #008000;">&#91;</span> edge<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span> <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                dis<span style="color: #008000;">&#91;</span> edge<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> edge<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">weight</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> rtn<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>常用的两种最短路算法，Dijkstra与SPFA。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code41'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2641"><td class="code" id="p26code41"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">int</span> dis<span style="color: #008000;">&#91;</span> MAX_N <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">void</span> dijkstra<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> src <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> dis<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> INF<span style="color: #008080;">;</span>
    dis<span style="color: #008000;">&#91;</span> src <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">int</span> minID , min <span style="color: #000080;">=</span> INF<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> j <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> j <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> j <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> dis<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;</span> min <span style="color: #000040;">&amp;&amp;</span> <span style="color: #000040;">!</span>vis<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                min <span style="color: #000080;">=</span> dis<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                minID <span style="color: #000080;">=</span> j<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        vis<span style="color: #008000;">&#91;</span> minID <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> j <span style="color: #000080;">=</span> lHead<span style="color: #008000;">&#91;</span> minID <span style="color: #008000;">&#93;</span> <span style="color: #008080;">;</span> j <span style="color: #008080;">;</span> j <span style="color: #000080;">=</span> edge<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">next</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> dis<span style="color: #008000;">&#91;</span> minID <span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> edge<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">weight</span> <span style="color: #000080;">&lt;</span> dis<span style="color: #008000;">&#91;</span> edge<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span> <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                dis<span style="color: #008000;">&#91;</span> edge<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> dis<span style="color: #008000;">&#91;</span> minID <span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> edge<span style="color: #008000;">&#91;</span> j <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">weight</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> spfa<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> src <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    queue<span style="color: #008000;">&#91;</span> head <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> src<span style="color: #008080;">;</span> tail <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    vis<span style="color: #008000;">&#91;</span> src <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> dis<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> INF<span style="color: #008080;">;</span>
    dis<span style="color: #008000;">&#91;</span> src <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span> head <span style="color: #000040;">!</span><span style="color: #000080;">=</span> tail <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">int</span> cur <span style="color: #000080;">=</span> queue<span style="color: #008000;">&#91;</span> head <span style="color: #000040;">++</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        head <span style="color: #000040;">%</span><span style="color: #000080;">=</span> MAX_N<span style="color: #008080;">;</span>
        vis<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> lHead<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> i <span style="color: #008080;">;</span> i <span style="color: #000080;">=</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">next</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> dis<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">weight</span> <span style="color: #000080;">&lt;</span> dis<span style="color: #008000;">&#91;</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span> <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                dis<span style="color: #008000;">&#91;</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> dis<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">weight</span><span style="color: #008080;">;</span>
                <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> <span style="color: #000040;">!</span>vis<span style="color: #008000;">&#91;</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span> <span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                    vis<span style="color: #008000;">&#91;</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
                    queue<span style="color: #008000;">&#91;</span> tail<span style="color: #000040;">++</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span><span style="color: #008080;">;</span>
                    tail <span style="color: #000040;">%</span><span style="color: #000080;">=</span> MAX_N<span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>拓扑排序</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p26code42'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2642"><td class="code" id="p26code42"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">void</span> topoSort<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> eCnt <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #000040;">++</span>d<span style="color: #008000;">&#91;</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    head <span style="color: #000080;">=</span> tail <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;=</span> n <span style="color: #008080;">;</span> <span style="color: #000040;">++</span> i <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> d<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span> <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            queue<span style="color: #008000;">&#91;</span> tail<span style="color: #000040;">++</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> i<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span> head <span style="color: #000040;">!</span><span style="color: #000080;">=</span> tail <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">int</span> cur <span style="color: #000080;">=</span> queue<span style="color: #008000;">&#91;</span> head<span style="color: #000040;">++</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
        fout <span style="color: #000080;">&lt;&lt;</span> cur <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot; &quot;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> lHead<span style="color: #008000;">&#91;</span> cur <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> i <span style="color: #008080;">;</span> i <span style="color: #000080;">=</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">next</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> <span style="color: #000040;">--</span> d<span style="color: #008000;">&#91;</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> queue<span style="color: #008000;">&#91;</span> tail <span style="color: #000040;">++</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> edge<span style="color: #008000;">&#91;</span> i <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tar</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.billwsy.com/2009/03/oi-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

