﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-MemoryGarden's Blog-随笔分类-报告</title><link>http://www.cppblog.com/MemoryGarden/category/8174.html</link><description>我相信

                                  -----------大能猫</description><language>zh-cn</language><lastBuildDate>Fri, 09 Oct 2009 13:47:11 GMT</lastBuildDate><pubDate>Fri, 09 Oct 2009 13:47:11 GMT</pubDate><ttl>60</ttl><item><title>poj 2117 Electricity   tju 2299 Electricity</title><link>http://www.cppblog.com/MemoryGarden/archive/2009/10/08/98096.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Thu, 08 Oct 2009 09:49:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2009/10/08/98096.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/98096.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2009/10/08/98096.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/98096.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/98096.html</trackback:ping><description><![CDATA[如果n == 1 结果就是0 //wa一次<br>如果m == 0 结果就是n - 1 //wa一次<br><br>其他的情况 ： <br><br>看看割点去掉后，能有几个联通分量，也就是割点有几个儿子。 这个就是去掉个点后增加的分量个数。<br><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;N&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">10001</span><span style="color: #000000;">;<br></span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;M&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">20001</span><span style="color: #000000;">;<br></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;e{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;v;<br>&nbsp;&nbsp;&nbsp;&nbsp;e</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;next;<br>};<br>e&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">link[N],&nbsp;edge[M&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">];<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;m,&nbsp;n,&nbsp;son[N],&nbsp;rootdegree,&nbsp;el,&nbsp;b[N],&nbsp;bb[N],&nbsp;time;<br></span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;judge[N];<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;min(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;b){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;a&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;b&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;b&nbsp;:&nbsp;a;<br>}<br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;dfs(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;u,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;root){<br>&nbsp;&nbsp;&nbsp;&nbsp;e&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">l&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;link[u];</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;v;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;c&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;b[u]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;bb[u]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;time</span><span style="color: #000000;">++</span><span style="color: #000000;">;judge[u]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(l){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">v;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">judge[v]){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dfs(v,&nbsp;root);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(u&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;root){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rootdegree</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(rootdegree&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">)&nbsp;son[u]</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bb[u]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;min(bb[u],&nbsp;bb[v]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(bb[v]&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;b[u])son[u]</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;bb[u]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;min(bb[u],&nbsp;b[v]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(){<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">2299.in</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdin);<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">2299.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdout);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j,&nbsp;u,&nbsp;v,&nbsp;fl,&nbsp;ans;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m),&nbsp;n&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;m){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;bb[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;judge[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;son[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;link[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}el&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;rootdegree&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;fl&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;m;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">u,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">v);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;edge[el].v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;v;edge[el].next&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;link[u];link[u]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">edge[el</span><span style="color: #000000;">++</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;edge[el].v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;u;edge[el].next&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;link[v];link[v]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">edge[el</span><span style="color: #000000;">++</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(n&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts(</span><span style="color: #000000;">"</span><span style="color: #000000;">0</span><span style="color: #000000;">"</span><span style="color: #000000;">);</span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(m&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;n&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">);</span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">judge[i]){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rootdegree&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;time&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;dfs(i,&nbsp;i);fl</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}ans&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(son[i]&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;ans)ans&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;son[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;ans&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;fl&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br></span></div>
<br><img src ="http://www.cppblog.com/MemoryGarden/aggbug/98096.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2009-10-08 17:49 <a href="http://www.cppblog.com/MemoryGarden/archive/2009/10/08/98096.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>toj 2233</title><link>http://www.cppblog.com/MemoryGarden/archive/2009/10/08/98064.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Wed, 07 Oct 2009 16:54:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2009/10/08/98064.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/98064.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2009/10/08/98064.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/98064.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/98064.html</trackback:ping><description><![CDATA[from roba<br><br>找出强联通分量，然后求出缩点图，找出缩点图内出度为0的点内的原顶点最小的cost值累加<br><br>(关于强联通分量前面有文章介绍)<br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;N&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">10001</span><span style="color: #000000;">;<br></span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;M&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">200001</span><span style="color: #000000;">;<br></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;e{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;v;<br>&nbsp;&nbsp;&nbsp;&nbsp;e</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;next;<br>};<br>e</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;link[N],&nbsp;edge[M],&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">tlink[N],&nbsp;tedge[M];<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n,&nbsp;m,&nbsp;cost[N],&nbsp;el,&nbsp;tel,&nbsp;f[N],&nbsp;time,&nbsp;belon[N],&nbsp;degree[N],&nbsp;s[N],&nbsp;ans[N];<br></span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;judge[N],&nbsp;zero[N];<br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;dfs(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;v){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i;e</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;l&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;link[v];judge[v]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(l){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">judge[l</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">v])dfs(l</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">v);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br>&nbsp;&nbsp;&nbsp;&nbsp;}f[v]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;time</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br>}<br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;tdfs(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;v,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;p){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i;e</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;l&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;tlink[v];judge[v]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;belon[v]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;p;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(l){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">judge[l</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">v])tdfs(l</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">v,&nbsp;p);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(){<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">2233.in</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdin);<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">2233.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdout);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j,&nbsp;u,&nbsp;v,&nbsp;fl,&nbsp;</span><span style="color: #0000ff;">out</span><span style="color: #000000;">;e</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;l;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m),&nbsp;m&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;n){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;time&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){tlink[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;link[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;NULL;judge[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;degree[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;zero[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;ans[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0x7fffffff</span><span style="color: #000000;">;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">cost[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(el&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;tel&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;m;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">u,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">v);u</span><span style="color: #000000;">--</span><span style="color: #000000;">;v</span><span style="color: #000000;">--</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;edge[el].v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;v;edge[el].next&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;link[u];link[u]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">edge[el</span><span style="color: #000000;">++</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tedge[tel].v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;u;tedge[tel].next&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;tlink[v];tlink[v]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">tedge[tel</span><span style="color: #000000;">++</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">judge[i])dfs(i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)s[f[i]]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;i;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(judge,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(judge));fl&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">--</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">judge[s[i]]){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tdfs(s[i],&nbsp;fl</span><span style="color: #000000;">++</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;link[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(l){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(belon[i]&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;belon[l</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">v])degree[belon[l</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">v]]</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">next;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;fl;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">degree[i]){zero[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;}}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(zero[belon[i]]){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(cost[i]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;ans[belon[i]])ans[belon[i]]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cost[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff;">out</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(zero[i])</span><span style="color: #0000ff;">out</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;ans[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">out</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br></span></div>
<br><br><img src ="http://www.cppblog.com/MemoryGarden/aggbug/98064.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2009-10-08 00:54 <a href="http://www.cppblog.com/MemoryGarden/archive/2009/10/08/98064.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ural 1227</title><link>http://www.cppblog.com/MemoryGarden/archive/2009/10/08/98063.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Wed, 07 Oct 2009 16:51:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2009/10/08/98063.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/98063.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2009/10/08/98063.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/98063.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/98063.html</trackback:ping><description><![CDATA[<a href="http://acm.timus.ru/problem.aspx?space=1&amp;num=1227">http://acm.timus.ru/problem.aspx?space=1&amp;num=1227</a><br><br>标明出处 ： roba<br><br>题目大意：要举办一场汽车拉力赛，赛道的长度S给定，每条公路的信息给定（公路的起点城市、终点城市、长度）。赛道的起点和终点可以设在公路的任何位置（不一定要恰好在城市），但为了安全起见，赛道只能设为单向的。问能否找到一条长度为S的赛道。<br>城市数M&lt;=100, 公路数N&lt;=10000<br><br>分析 ： 如果有环，必成立，如果无环，则找树的直径(我有文章介绍也是roba的资料)<br><br>代码 ： <br><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">queue</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;std;<br></span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;N&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">101</span><span style="color: #000000;">;<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;color[N],&nbsp;n,&nbsp;m,&nbsp;s,&nbsp;map[N][N],&nbsp;d[N],&nbsp;aaaa[N][N];<br></span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;judge[N],&nbsp;circle;<br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;dfs(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;v){&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">判环</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;t;judge[v]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">printf("dfs&nbsp;:&nbsp;%d\n",&nbsp;v);</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">circle){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(map[v][i]){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">judge[i]){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;map[v][i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map[v][i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;map[i][v]</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dfs(i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map[v][i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;map[i][v]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;v)circle&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br>queue</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;qu,&nbsp;qq;<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;bfs(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;s){&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j,&nbsp;w,&nbsp;t,&nbsp;si;<br>&nbsp;&nbsp;&nbsp;&nbsp;qu&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;qq;qu.push(s);judge[s]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;d[s]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;si&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;qu.size();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">si)</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;qu.front();qu.pop();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(map[t][i]&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">!</span><span style="color: #000000;">judge[i]){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;judge[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;d[t]&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;map[t][i];qu.push(i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(){<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">1227.in</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdin);<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">1227.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdout);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j,&nbsp;u,&nbsp;v,&nbsp;w;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;ok,&nbsp;bo;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">s)&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(judge,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(judge));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(map,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(map));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(aaaa,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(aaaa));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;circle&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;ok&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;m;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">u,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">v,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">w);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(u&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;v)ok&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map[u][v]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;map[v][u]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;w;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aaaa[u][v]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">aaaa[v][u];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(aaaa[u][v]&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">)ok&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(ok){puts(</span><span style="color: #000000;">"</span><span style="color: #000000;">YES</span><span style="color: #000000;">"</span><span style="color: #000000;">);</span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">circle&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">!</span><span style="color: #000000;">judge[i])dfs(i);</span><span style="color: #008000;">//</span><span style="color: #008000;">有可能整个图不联通<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">puts("<img src="http://www.cppblog.com/Images/dot.gif">");</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(circle)puts(</span><span style="color: #000000;">"</span><span style="color: #000000;">YES</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(judge,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(judge));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">judge[i])bfs(i);w&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;">有可能整个图不联通</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(d[i]&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;w){w&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;d[i];&nbsp;u&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;i;}}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">printf("w&nbsp;=&nbsp;%d&nbsp;&nbsp;u&nbsp;=&nbsp;%d\n",&nbsp;w,&nbsp;u);</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(judge,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(judge));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bfs(u);bo&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(d[i]&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;s){puts(</span><span style="color: #000000;">"</span><span style="color: #000000;">YES</span><span style="color: #000000;">"</span><span style="color: #000000;">);bo&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">bo)puts(</span><span style="color: #000000;">"</span><span style="color: #000000;">NO</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br></span></div>
<br> <img src ="http://www.cppblog.com/MemoryGarden/aggbug/98063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2009-10-08 00:51 <a href="http://www.cppblog.com/MemoryGarden/archive/2009/10/08/98063.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj  2549  hash + heap</title><link>http://www.cppblog.com/MemoryGarden/archive/2009/10/03/97778.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Fri, 02 Oct 2009 18:05:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2009/10/03/97778.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/97778.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2009/10/03/97778.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/97778.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/97778.html</trackback:ping><description><![CDATA[求解a + b + c = d的d的最大值，已知输入的数不同。<br><br>变形为 a + b = d - c;<br><br>将a + b放入hash 通过堆来每次枚举当前最大d值，再枚举c如果找到，就可以了。找不到就no&nbsp; 我的hash有毛病，刚学，希望指导下。<br><br><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">algorithm</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;std;<br></span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;len1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">3214567</span><span style="color: #000000;">,&nbsp;len2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">642913</span><span style="color: #000000;">;<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;pool[</span><span style="color: #000000;">10000</span><span style="color: #000000;">],&nbsp;poolen,&nbsp;hash[len1],&nbsp;left[len1],&nbsp;right[len1],&nbsp;pleft[</span><span style="color: #000000;">10000</span><span style="color: #000000;">],&nbsp;pright[</span><span style="color: #000000;">10000</span><span style="color: #000000;">],&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[</span><span style="color: #000000;">1001</span><span style="color: #000000;">],&nbsp;temp;<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;h1(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;a&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;len1;<br>}<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;h2(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a){<br>&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;len2;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;temp;<br>}<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;h(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;(h1(a)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;h2(a))&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;len1;<br>}<br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;insert(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;v,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;l,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;r){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;k;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;h(v,&nbsp;i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(hash[k]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hash[k]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;v;left[k]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l;right[k]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;r;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;pool[poolen]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;v;<br>&nbsp;&nbsp;&nbsp;&nbsp;pleft[poolen]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l;<br>&nbsp;&nbsp;&nbsp;&nbsp;pright[poolen</span><span style="color: #000000;">++</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;r;<br><br>}<br><br></span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;search(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;v,&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;v1,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;v2){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;k;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;temp;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;h(v,&nbsp;i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(hash[k]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;v){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[left[k]]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;v1&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[left[k]]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;v2&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[right[k]]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;v1&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[right[k]]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;v2)</span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[left[k]]&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[right[k]]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;v1&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;v2)</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(hash[k]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">)</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;poolen;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(pool[i]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;v){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[pleft[i]]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;v1&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[pleft[i]]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;v2&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[pright[i]]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;v1&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[pright[i]]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;v2)</span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[pleft[i]]&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[pright[i]]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;v1&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;v2)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;cmp(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;b){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;a&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;b;<br>}<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;jdz(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a){</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;a&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;a&nbsp;:&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">a;}<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(){<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">2549.in</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdin);<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">2549.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdout);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n,&nbsp;i,&nbsp;j,&nbsp;res,&nbsp;t,&nbsp;len,&nbsp;d,&nbsp;ans,&nbsp;tin[</span><span style="color: #000000;">1001</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;orz;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n),&nbsp;n){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;ans&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">0x7fffffff</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(hash,&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(hash));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">t);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tin[len]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;t;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[len</span><span style="color: #000000;">++</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;len;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;j&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;len;&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert(jdz(</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[i]&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[j]),&nbsp;i,&nbsp;j);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}orz&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;make_heap(tin,&nbsp;tin&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;len,&nbsp;cmp);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;len;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;len;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">,&nbsp;t</span><span style="color: #000000;">--</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;j&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;len;&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(tin[</span><span style="color: #000000;">0</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[j]&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;search(jdz(tin[</span><span style="color: #000000;">0</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[j]),&nbsp;tin[</span><span style="color: #000000;">0</span><span style="color: #000000;">],&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">[j])){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orz&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;ans&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;tin[</span><span style="color: #000000;">0</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(orz)</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pop_heap(tin,&nbsp;tin&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;t,&nbsp;cmp);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">orz)puts(</span><span style="color: #000000;">"</span><span style="color: #000000;">no&nbsp;solution</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;ans);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br></span></div>
<br><img src ="http://www.cppblog.com/MemoryGarden/aggbug/97778.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2009-10-03 02:05 <a href="http://www.cppblog.com/MemoryGarden/archive/2009/10/03/97778.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>计数排序 实现</title><link>http://www.cppblog.com/MemoryGarden/archive/2009/09/29/97537.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Tue, 29 Sep 2009 05:12:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2009/09/29/97537.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/97537.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2009/09/29/97537.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/97537.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/97537.html</trackback:ping><description><![CDATA[&nbsp;from&nbsp; -&gt; introdution to algorithms<br><br>原理简单，稳定性高，有应用条件 即 ： n个输入元素都是在0 - k之间的整数，当k = O(n)时, 计数排序的时间为O(n).<br><br><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;_&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0x7fffffff</span><span style="color: #000000;">;<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a[</span><span style="color: #000000;">100</span><span style="color: #000000;">],&nbsp;n,&nbsp;</span><span style="color: #0000ff;">out</span><span style="color: #000000;">[</span><span style="color: #000000;">100</span><span style="color: #000000;">];<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;c[</span><span style="color: #000000;">100</span><span style="color: #000000;">];<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(){<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">count_sort.in</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdin);<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">count_sort.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdout);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;k;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n)&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">_;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(c,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(c));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(a[i]&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;k)k&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c[a[i]]</span><span style="color: #000000;">++</span><span style="color: #000000;">;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">初始化&lt;=自己的元素个数为1。</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;k;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)c[i]&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;c[i&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">];</span><span style="color: #008000;">//</span><span style="color: #008000;">c中存放整个数列中小于等于自己的元素的个数。</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">out</span><span style="color: #000000;">[c[a[i]]]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[i];</span><span style="color: #008000;">//</span><span style="color: #008000;">放到相应的位置上&nbsp;比如&nbsp;有&nbsp;5个元素小于等于自己(包含自己)，那么，这个元素应该排在第五位</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c[a[i]]</span><span style="color: #000000;">--</span><span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;">计数器&nbsp;-&nbsp;1</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">out</span><span style="color: #000000;">[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts(</span><span style="color: #000000;">""</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br></span></div>
<br><img src ="http://www.cppblog.com/MemoryGarden/aggbug/97537.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2009-09-29 13:12 <a href="http://www.cppblog.com/MemoryGarden/archive/2009/09/29/97537.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>qsort 随机化版本实现</title><link>http://www.cppblog.com/MemoryGarden/archive/2009/09/29/97536.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Tue, 29 Sep 2009 05:05:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2009/09/29/97536.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/97536.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2009/09/29/97536.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/97536.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/97536.html</trackback:ping><description><![CDATA[<br>from -&gt; introdution to algorithms<br><br><br>随机化，即将partition 的哨兵随机化， 从而来平衡时间复杂度。<br><br>贴个代码<br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdlib.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">time.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a[</span><span style="color: #000000;">100</span><span style="color: #000000;">],&nbsp;n;<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;partition(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;l,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;r){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;j,&nbsp;x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[r],&nbsp;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l;&nbsp;j&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;r;&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(a[j]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;x){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[i];&nbsp;a[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[j];&nbsp;a[j]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}i</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[i];a[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[r];a[r]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;i;<br>}<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;rand_partition(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;l,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;r){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;k&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;rand()&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;(r&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;l&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;l,&nbsp;t;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">在l&nbsp;和&nbsp;r&nbsp;之间随即一个下标，和哨兵交换&nbsp;其他的和普通的qsort&nbsp;是一样的。</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[k];a[k]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[r];a[r]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;partition(l,&nbsp;r);<br>}<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;qsort(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;l,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;r){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;q;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(l&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;r){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;rand_partition(l,&nbsp;r);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qsort(l,&nbsp;q&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qsort(q&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;r);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(){<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">qsort_rand.in</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdin);<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">qsort_rand.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdout);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n)&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srand(time(NULL));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qsort(</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;n);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;a[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts(</span><span style="color: #000000;">""</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br></span></div>
<br><img src ="http://www.cppblog.com/MemoryGarden/aggbug/97536.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2009-09-29 13:05 <a href="http://www.cppblog.com/MemoryGarden/archive/2009/09/29/97536.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>qsort 实现</title><link>http://www.cppblog.com/MemoryGarden/archive/2009/09/28/97464.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Mon, 28 Sep 2009 06:46:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2009/09/28/97464.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/97464.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2009/09/28/97464.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/97464.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/97464.html</trackback:ping><description><![CDATA[from -&gt; introdution to algorithms<br><br><br>分治的思想。 贴个代码<br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a[</span><span style="color: #000000;">100</span><span style="color: #000000;">],&nbsp;n;<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;partition(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;l,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;r){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[r],&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;j,&nbsp;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">x为哨兵<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">i&nbsp;为两个集合(小于等于哨兵［在左边］，&nbsp;大于等于哨兵［在右边］)的分界线</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l;&nbsp;j&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;r;&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(a[j]&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;x){</span><span style="color: #008000;">//</span><span style="color: #008000;">若发现&nbsp;小于哨兵的元素&nbsp;则左边的集合长度扩展，交换。</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[i];a[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[j];a[j]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}i</span><span style="color: #000000;">++</span><span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;">转移到右边几何第一个并交换</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[i];a[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[r];a[r]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;i;</span><span style="color: #008000;">//</span><span style="color: #008000;">为哨兵所在位置。&nbsp;保证左边和右边集合的正确划分。</span><span style="color: #008000;"><br></span><span style="color: #000000;">}<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;qsort(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;l,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;r){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;q;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(l&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;r){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;partition(l,&nbsp;r);</span><span style="color: #008000;">//</span><span style="color: #008000;">partition</span><span style="color: #008000;">//</span><span style="color: #008000;">对于搜索树来说，类似是先序遍历的。</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qsort(l,&nbsp;q&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">左半部分</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qsort(q&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;r);</span><span style="color: #008000;">//</span><span style="color: #008000;">右半部分<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">这里没有合并操作，a[l,&nbsp;r]已经是有序的了。</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(){<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">qsort.in</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdin);<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">qsort.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdout);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n)&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qsort(</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;n);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;a[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts(</span><span style="color: #000000;">""</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br></span></div>
<br><br><img src ="http://www.cppblog.com/MemoryGarden/aggbug/97464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2009-09-28 14:46 <a href="http://www.cppblog.com/MemoryGarden/archive/2009/09/28/97464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>priority queue 实现</title><link>http://www.cppblog.com/MemoryGarden/archive/2009/09/28/97449.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Mon, 28 Sep 2009 04:16:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2009/09/28/97449.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/97449.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2009/09/28/97449.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/97449.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/97449.html</trackback:ping><description><![CDATA[from&nbsp; -&gt; introdution to algorithms<br><br>大体和堆差不多。贴个代码<br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a[</span><span style="color: #000000;">100</span><span style="color: #000000;">],&nbsp;heapsize,&nbsp;n;<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;parent(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;left(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;right(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;heapfy(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;largest&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;i,&nbsp;l&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;left(i),&nbsp;r&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;right(i),&nbsp;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(l&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;heapsize&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;a[l]&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;a[i])largest&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(r&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;heapsize&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;a[largest]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;a[r])largest&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;r;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(largest&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;i){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[largest];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[largest]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;heapfy(largest);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;push(){&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">插入的节点直接放到叶子上就可以，然后heapsize++，&nbsp;再沿根向上，保持堆的性质。</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">heapsize,&nbsp;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;a[parent(i)]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;a[i]){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[parent(i)];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[parent(i)]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;parent(i);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;pop(){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[</span><span style="color: #000000;">1</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;a[</span><span style="color: #000000;">1</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[heapsize];<br>&nbsp;&nbsp;&nbsp;&nbsp;a[heapsize]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;heapsize</span><span style="color: #000000;">--</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;heapfy(</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br>}<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;pqmax(){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;a[</span><span style="color: #000000;">1</span><span style="color: #000000;">];<br>}<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(){<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">pq.in</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdin);<br>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">pq.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdout);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j,&nbsp;k;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n)&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;heapsize&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(heapsize&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;pqmax());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pop();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}puts(</span><span style="color: #000000;">""</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br></span></div>
<br><br><img src ="http://www.cppblog.com/MemoryGarden/aggbug/97449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2009-09-28 12:16 <a href="http://www.cppblog.com/MemoryGarden/archive/2009/09/28/97449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>heap_sort 实现</title><link>http://www.cppblog.com/MemoryGarden/archive/2009/09/27/97408.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Sun, 27 Sep 2009 14:49:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2009/09/27/97408.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/97408.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2009/09/27/97408.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/97408.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/97408.html</trackback:ping><description><![CDATA[from&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; introdution to algorithm<br><br><br>贴一个带有部分注释的代码<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a[</span><span style="color: #000000;">100</span><span style="color: #000000;">],&nbsp;heapsize,&nbsp;n;<br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;left(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i){</span><span style="color: #008000;">//</span><span style="color: #008000;">返回左儿子编号</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;right(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i){</span><span style="color: #008000;">//</span><span style="color: #008000;">返回右儿子编号</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;father(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i){<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;heapfy(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i){<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;l&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;left(i),&nbsp;r&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;right(i),&nbsp;largest&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;i,&nbsp;t;<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(l&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;heapsize&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;a[i]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;a[l])largest&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l;</span><span style="color: #008000;">//</span><span style="color: #008000;">选取最大的下标</span><span style="color: #008000;"><br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(r&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;heapsize&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;a[largest]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;a[r])largest&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;r;<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(largest&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;i){</span><span style="color: #008000;">//</span><span style="color: #008000;">若不是当前节点，则证明违反了堆的性质，交换后满足，然后继续维护交换后的子树</span><span style="color: #008000;"><br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[i];<br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[largest];<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[largest]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;t;<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;heapfy(largest);<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;make_heap(){</span><span style="color: #008000;">//</span><span style="color: #008000;">make&nbsp;heap&nbsp;</span><span style="color: #008000;"><br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i;<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">--</span><span style="color: #000000;">)heapfy(i);&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">由满二叉树的性质决定，x&nbsp;&gt;&nbsp;n&nbsp;/&nbsp;2&nbsp;&nbsp;为叶子节点，叶子节点不用维护堆的性质，直接就是一个根，堆性质正确，还要自底向上的一个维护，保证对于一棵树来说，子树已经是堆，这样到跟节点后，整个树就是堆了。</span><span style="color: #008000;"><br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">}<br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;pop_heap(){</span><span style="color: #008000;">//</span><span style="color: #008000;">将当前堆最大(小)的元素弹出，&nbsp;和heapsize元素交换，然后堆长度--，交换后只有根有可能违反堆的性质，维护一下。</span><span style="color: #008000;"><br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;t;<br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[</span><span style="color: #000000;">1</span><span style="color: #000000;">];<br></span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;a[</span><span style="color: #000000;">1</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[heapsize];<br></span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;a[heapsize]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;t;<br></span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;heapsize</span><span style="color: #000000;">--</span><span style="color: #000000;">;<br></span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;heapfy(</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br></span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(){<br></span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">heap_sort.in</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdin);<br></span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">heap_sort.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdout);<br></span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j,&nbsp;k;<br></span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n)&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br></span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;heapsize&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;n;<br></span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a[i]);<br></span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;make_heap();<br></span><span style="color: #008080;">47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pop_heap();<br></span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">50</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;a[i]);<br></span><span style="color: #008080;">52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">53</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts(</span><span style="color: #000000;">""</span><span style="color: #000000;">);<br></span><span style="color: #008080;">54</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">55</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">56</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">57</span>&nbsp;<span style="color: #000000;"></span></div>
<br><img src ="http://www.cppblog.com/MemoryGarden/aggbug/97408.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2009-09-27 22:49 <a href="http://www.cppblog.com/MemoryGarden/archive/2009/09/27/97408.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>merge sort 实现</title><link>http://www.cppblog.com/MemoryGarden/archive/2009/09/27/97341.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Sun, 27 Sep 2009 03:23:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2009/09/27/97341.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/97341.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2009/09/27/97341.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/97341.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/97341.html</trackback:ping><description><![CDATA[2路归并排序 ： <br><br>introdution to algorithm 上讲解的不能再详细了， 我就不在这里班门弄斧了，贴一个带有部分注释的代码。<br><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a[</span><span style="color: #000000;">100</span><span style="color: #000000;">],&nbsp;left[</span><span style="color: #000000;">100</span><span style="color: #000000;">],&nbsp;right[</span><span style="color: #000000;">100</span><span style="color: #000000;">],&nbsp;nil&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0x7fffffff</span><span style="color: #000000;">,&nbsp;n;<br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">left&nbsp;为扣着的左边的牌&nbsp;&nbsp;&nbsp;righg&nbsp;为扣着的右半部分的牌。<br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #008000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;a&nbsp;原地排序</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #008000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;merge(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;l,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;r){<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">printf("merge(%d&nbsp;%d)\n",&nbsp;l,&nbsp;r);</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j,&nbsp;p&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(l&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;r)&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;t;<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l,&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;p;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">,&nbsp;t</span><span style="color: #000000;">++</span><span style="color: #000000;">)left[t]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[i];left[t]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;nil;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">初始化左边的牌</span><span style="color: #008000;"><br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;p&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;j&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;r;&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">,&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)right[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[j];right[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;nil;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">初始化右边的牌<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">printf("left&nbsp;:&nbsp;\n");&nbsp;<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">for(i&nbsp;=&nbsp;0;&nbsp;left[i]&nbsp;!=&nbsp;nil;&nbsp;i++)printf("%d&nbsp;",&nbsp;left[i]);<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">puts("");<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">puts("right&nbsp;:&nbsp;");<br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">for(j&nbsp;=&nbsp;0;&nbsp;right[j]&nbsp;!=&nbsp;nil;&nbsp;j++)printf("%d&nbsp;",&nbsp;right[j]);<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">puts("");</span><span style="color: #008000;"><br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(p&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l,&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;p&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;r;&nbsp;p</span><span style="color: #000000;">++</span><span style="color: #000000;">){&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;对a进行原地排序，每次拿出一个左右边最小的一个放到里面。</span><span style="color: #008000;"><br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(left[i]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;right[j])a[p]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;left[i</span><span style="color: #000000;">++</span><span style="color: #000000;">];<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;a[p]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;right[j</span><span style="color: #000000;">++</span><span style="color: #000000;">];<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;merge_sort(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;l,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;r){<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;q;<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(l&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;r){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">对于这棵深度优先搜索树来说，merger&nbsp;的调用，相当于后序遍历的，&nbsp;也就是说，先两个儿子，然后根节点。</span><span style="color: #008000;"><br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(l&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;r)&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">printf("merger_sort(%d&nbsp;%d)\n",&nbsp;l,&nbsp;q);</span><span style="color: #008000;"><br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;merge_sort(l,&nbsp;q);<br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">printf("merger_sort(%d&nbsp;%d)\n",&nbsp;q&nbsp;+&nbsp;1,&nbsp;r);</span><span style="color: #008000;"><br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;merge_sort(q&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;r);//也就是合并 - - <br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;merge(l,&nbsp;r);<br></span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(){<br></span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">merge_sort.in</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdin);<br></span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">merge_sort.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;stdout);<br></span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j;<br></span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n)&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br></span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a[i]);<br></span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;merge_sort(</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;n&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br></span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;a[i]);<br></span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts(</span><span style="color: #000000;">""</span><span style="color: #000000;">);<br></span><span style="color: #008080;">47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">50</span>&nbsp;<span style="color: #000000;"></span></div>
<br><br> <img src ="http://www.cppblog.com/MemoryGarden/aggbug/97341.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2009-09-27 11:23 <a href="http://www.cppblog.com/MemoryGarden/archive/2009/09/27/97341.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>string.h 库函数实现</title><link>http://www.cppblog.com/MemoryGarden/archive/2009/09/19/96692.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Fri, 18 Sep 2009 17:39:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2009/09/19/96692.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/96692.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2009/09/19/96692.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/96692.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/96692.html</trackback:ping><description><![CDATA[<p>我没有全部实现，在ie里面上传才好用，所以耽误了一点时间，可以在此<a title=下载 href="http://www.cppblog.com/Files/MemoryGarden/%20-%20-/string.h.rar">下载</a>压缩包文件，是在linux gcc 环境下编译的</p>
<br><br>注 ： 实现不完全，也不完全正确，如果有错误以及补充，就留言好了。谢谢
<img src ="http://www.cppblog.com/MemoryGarden/aggbug/96692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2009-09-19 01:39 <a href="http://www.cppblog.com/MemoryGarden/archive/2009/09/19/96692.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>线段树 总结</title><link>http://www.cppblog.com/MemoryGarden/archive/2009/04/11/79565.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Fri, 10 Apr 2009 18:55:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2009/04/11/79565.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/79565.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2009/04/11/79565.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/79565.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/79565.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 以下记录，有个人见解，如若有错误，欢迎提出，我一定改正。附件 ：&nbsp; /Files/MemoryGarden/xuemao.rar&nbsp; 经过了一段时间，终于学会了线段树的基本应用了线段树的应用非常灵活，我只是学会了皮毛，个人倾向于静态，所以需要以下全局变量。int&nbsp;tree[max],&nbsp;leftchild[max],&nbsp;rightchild[ma...&nbsp;&nbsp;<a href='http://www.cppblog.com/MemoryGarden/archive/2009/04/11/79565.html'>阅读全文</a><img src ="http://www.cppblog.com/MemoryGarden/aggbug/79565.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2009-04-11 02:55 <a href="http://www.cppblog.com/MemoryGarden/archive/2009/04/11/79565.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JOJ 1197 Sum It Up</title><link>http://www.cppblog.com/MemoryGarden/archive/2009/04/07/79217.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Tue, 07 Apr 2009 14:47:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2009/04/07/79217.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/79217.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2009/04/07/79217.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/79217.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/79217.html</trackback:ping><description><![CDATA[Sum It Up<br>
<p>Given a specified total <em>t</em> and a list of <em>n</em> integers, find all distinct sums using numbers from the list that add up to <em>t</em>. For example, if <em>t</em> = 4, <em>n</em> = 6, and the list is [4, 3, 2, 2, 1, 1], then there are four different sums that equal 4: 4, 3+1, 2+2, and 2+1+1. (A number can be used within a sum as many times as it appears in the list, and a single number counts as a sum.) Your job is to solve this problem in general.
<p>
<h3>Input</h3>
The input file will contain one or more test cases, one per line. Each test case contains <em>t</em>, the total, followed by <em>n</em>, the number of integers in the list, followed by <em>n</em> integers . If <em>n</em> = 0 it signals the end of the input; otherwise, <em>t</em> will be a positive integer less than 1000, <em>n</em> will be an integer between 1 and 12 (inclusive), and&nbsp; will be positive integers less than 100. All numbers will be separated by exactly one space. The numbers in each list appear in nonincreasing order, and there may be repetitions.
<p>
<h3>Output</h3>
For each test case, first output a line containing `<tt>Sums of </tt>', the total, and a colon. Then output each sum, one per line; if there are no sums, output the line `<tt>NONE</tt>'. The numbers within each sum must appear in nonincreasing order. A number may be repeated in the sum as many times as it was repeated in the original list. The sums themselves must be sorted in decreasing order based on the numbers appearing in the sum. In other words, the sums must be sorted by their first number; sums with the same first number must be sorted by their second number; sums with the same first two numbers must be sorted by their third number; and so on. Within each test case, all sums must be distinct; the same sum cannot appear twice.
<p>
<h3>Sample Input</h3>
<pre>4 6 4 3 2 2 1 1
5 3 2 1 1
400 12 50 50 50 50 50 50 25 25 25 25 25 25
0 0
</pre>
<p>
<h3>Sample Output</h3>
<pre>Sums of 4:
4
3+1
2+2
2+1+1
Sums of 5:
NONE
Sums of 400:
50+50+50+50+50+50+25+25+25+25
50+50+50+50+50+25+25+25+25+25+25</pre>
<pre>&nbsp;</pre>
<pre>想法 ： 这个题目以前出现在08年一个热身赛上，当时就没有过，然后一直放到现在，才过了的。还是想了好长时间的。</pre>
<pre>&nbsp;</pre>
<pre>由于这个题目不能有重复的结果，所以我们把输入的数字分类，也就是说，有几个几。这样，我们再按照种类进行dfs 的时候，就不会出现重复的了，因为每个种类</pre>
<pre>每次dfs 从当前的index 走到下面，不会出现重复的情况。 </pre>
<pre>&nbsp;</pre>
<pre>再需要解决的就是求和的为题，求和很简单了，我们记录每种数有几个，从大到小，进行枚举，它的和就可以了。</pre>
<pre>&nbsp;</pre>
<pre>再需要解决路径，就是做点改变，用一个二维的数组，记录有几个几，第一维记录几个数字，第二维记录这个数字是什么。</pre>
<pre>&nbsp;</pre>
<pre>附代码 ：</pre>
<pre>&nbsp;</pre>
<pre>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;many[</span><span style="COLOR: #000000">101</span><span style="COLOR: #000000">],&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">[</span><span style="COLOR: #000000">13</span><span style="COLOR: #000000">],&nbsp;sum,&nbsp;n,&nbsp;kind[</span><span style="COLOR: #000000">13</span><span style="COLOR: #000000">],&nbsp;dif;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;path[</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;judge[</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">],&nbsp;ok;<br><img id=Codehighlighter1_158_806_Open_Image onclick="this.style.display='none'; Codehighlighter1_158_806_Open_Text.style.display='none'; Codehighlighter1_158_806_Closed_Image.style.display='inline'; Codehighlighter1_158_806_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_158_806_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_158_806_Closed_Text.style.display='none'; Codehighlighter1_158_806_Open_Image.style.display='inline'; Codehighlighter1_158_806_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;dfs(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;index,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;s,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;pl)</span><span id=Codehighlighter1_158_806_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_158_806_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i,&nbsp;j;<br><img id=Codehighlighter1_184_375_Open_Image onclick="this.style.display='none'; Codehighlighter1_184_375_Open_Text.style.display='none'; Codehighlighter1_184_375_Closed_Image.style.display='inline'; Codehighlighter1_184_375_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_184_375_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_184_375_Closed_Text.style.display='none'; Codehighlighter1_184_375_Open_Image.style.display='inline'; Codehighlighter1_184_375_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(s&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;sum)</span><span id=Codehighlighter1_184_375_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_184_375_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;f&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_242_360_Open_Image onclick="this.style.display='none'; Codehighlighter1_242_360_Open_Text.style.display='none'; Codehighlighter1_242_360_Closed_Image.style.display='inline'; Codehighlighter1_242_360_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_242_360_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_242_360_Closed_Text.style.display='none'; Codehighlighter1_242_360_Open_Image.style.display='inline'; Codehighlighter1_242_360_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;pl;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)</span><span id=Codehighlighter1_242_360_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_242_360_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_278_356_Open_Image onclick="this.style.display='none'; Codehighlighter1_278_356_Open_Text.style.display='none'; Codehighlighter1_278_356_Closed_Image.style.display='inline'; Codehighlighter1_278_356_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_278_356_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_278_356_Closed_Text.style.display='none'; Codehighlighter1_278_356_Open_Image.style.display='inline'; Codehighlighter1_278_356_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(j&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;j&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;path[i][</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">];&nbsp;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)</span><span id=Codehighlighter1_278_356_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_278_356_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">f)f&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;putchar(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;path[i][</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts(</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_382_804_Open_Image onclick="this.style.display='none'; Codehighlighter1_382_804_Open_Text.style.display='none'; Codehighlighter1_382_804_Closed_Image.style.display='inline'; Codehighlighter1_382_804_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_382_804_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_382_804_Closed_Text.style.display='none'; Codehighlighter1_382_804_Open_Image.style.display='inline'; Codehighlighter1_382_804_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span id=Codehighlighter1_382_804_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_382_804_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_414_801_Open_Image onclick="this.style.display='none'; Codehighlighter1_414_801_Open_Text.style.display='none'; Codehighlighter1_414_801_Closed_Image.style.display='inline'; Codehighlighter1_414_801_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_414_801_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_414_801_Closed_Text.style.display='none'; Codehighlighter1_414_801_Open_Image.style.display='inline'; Codehighlighter1_414_801_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;index;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;dif;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)</span><span id=Codehighlighter1_414_801_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_414_801_Open_Text><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;对于种类，dfs</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_444_793_Open_Image onclick="this.style.display='none'; Codehighlighter1_444_793_Open_Text.style.display='none'; Codehighlighter1_444_793_Closed_Image.style.display='inline'; Codehighlighter1_444_793_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_444_793_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_444_793_Closed_Text.style.display='none'; Codehighlighter1_444_793_Open_Image.style.display='inline'; Codehighlighter1_444_793_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">judge[i])</span><span id=Codehighlighter1_444_793_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_444_793_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_485_788_Open_Image onclick="this.style.display='none'; Codehighlighter1_485_788_Open_Text.style.display='none'; Codehighlighter1_485_788_Closed_Image.style.display='inline'; Codehighlighter1_485_788_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_485_788_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_485_788_Closed_Text.style.display='none'; Codehighlighter1_485_788_Open_Image.style.display='inline'; Codehighlighter1_485_788_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(j&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;many[kind[i]];&nbsp;j&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;j</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">)</span><span id=Codehighlighter1_485_788_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_485_788_Open_Text><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;每种由大到小，枚举所有的可能性</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_537_782_Open_Image onclick="this.style.display='none'; Codehighlighter1_537_782_Open_Text.style.display='none'; Codehighlighter1_537_782_Closed_Image.style.display='inline'; Codehighlighter1_537_782_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_537_782_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_537_782_Closed_Text.style.display='none'; Codehighlighter1_537_782_Open_Image.style.display='inline'; Codehighlighter1_537_782_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(s&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;j&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;kind[i]&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;sum)</span><span id=Codehighlighter1_537_782_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_537_782_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;judge[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">标记走过</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path[pl][</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;j;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">记录有多少个这个数</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path[pl][</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;kind[i];&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">记录某个数字<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;printf("dfs&nbsp;%d&nbsp;ge&nbsp;%d&nbsp;&nbsp;sum&nbsp;=&nbsp;%d\n",&nbsp;j,&nbsp;kind[i],&nbsp;s&nbsp;+&nbsp;kind[i]);</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dfs(i,&nbsp;s&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;j&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;kind[i],&nbsp;pl&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;judge[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;回溯</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_818_1474_Open_Image onclick="this.style.display='none'; Codehighlighter1_818_1474_Open_Text.style.display='none'; Codehighlighter1_818_1474_Closed_Image.style.display='inline'; Codehighlighter1_818_1474_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_818_1474_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_818_1474_Closed_Text.style.display='none'; Codehighlighter1_818_1474_Open_Image.style.display='inline'; Codehighlighter1_818_1474_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()</span><span id=Codehighlighter1_818_1474_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_818_1474_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1197.in</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">r</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;stdin);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1197.out</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">w</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;stdout);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i,&nbsp;j;<br><img id=Codehighlighter1_949_1458_Open_Image onclick="this.style.display='none'; Codehighlighter1_949_1458_Open_Text.style.display='none'; Codehighlighter1_949_1458_Closed_Image.style.display='inline'; Codehighlighter1_949_1458_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_949_1458_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_949_1458_Closed_Text.style.display='none'; Codehighlighter1_949_1458_Open_Image.style.display='inline'; Codehighlighter1_949_1458_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">sum,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">n),&nbsp;sum&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;n)</span><span id=Codehighlighter1_949_1458_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_949_1458_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dif&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;ok&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(many,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(many));<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">));<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(kind,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(kind));<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;n;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">[i]);<br><img id=Codehighlighter1_1155_1273_Open_Image onclick="this.style.display='none'; Codehighlighter1_1155_1273_Open_Text.style.display='none'; Codehighlighter1_1155_1273_Closed_Image.style.display='inline'; Codehighlighter1_1155_1273_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1155_1273_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1155_1273_Closed_Text.style.display='none'; Codehighlighter1_1155_1273_Open_Image.style.display='inline'; Codehighlighter1_1155_1273_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;j&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;j&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;n;&nbsp;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">,&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)</span><span id=Codehighlighter1_1155_1273_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1155_1273_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_1178_1246_Open_Image onclick="this.style.display='none'; Codehighlighter1_1178_1246_Open_Text.style.display='none'; Codehighlighter1_1178_1246_Closed_Image.style.display='inline'; Codehighlighter1_1178_1246_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1178_1246_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1178_1246_Closed_Text.style.display='none'; Codehighlighter1_1178_1246_Open_Image.style.display='inline'; Codehighlighter1_1178_1246_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">[i]&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">[j])</span><span id=Codehighlighter1_1178_1246_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1178_1246_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kind[dif</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">[j];&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;提取种类</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;many[</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">[j]]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">每种多少个。</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;many[</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">[j]]</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_1299_1361_Open_Image onclick="this.style.display='none'; Codehighlighter1_1299_1361_Open_Text.style.display='none'; Codehighlighter1_1299_1361_Closed_Image.style.display='inline'; Codehighlighter1_1299_1361_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1299_1361_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1299_1361_Closed_Text.style.display='none'; Codehighlighter1_1299_1361_Open_Image.style.display='inline'; Codehighlighter1_1299_1361_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">[n]&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">[n&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">])</span><span id=Codehighlighter1_1299_1361_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1299_1361_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kind[dif</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">[n];&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">。。。最有也有一个。</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;many[</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">[n]]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;many[</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">[n]]</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Sums&nbsp;of&nbsp;%d:\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;sum);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dfs(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">ok)puts(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">NONE</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
</pre>
<pre>对于dfs 的理解还是不好的。非常不好，这个题目还是想了很长时间，想象不出来进入dfs后的情况。</pre>
<pre>&nbsp;</pre>
<pre>&nbsp;</pre>
<pre>&nbsp;</pre>
<pre>&nbsp;</pre>
<pre>&nbsp;</pre>
<img src ="http://www.cppblog.com/MemoryGarden/aggbug/79217.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2009-04-07 22:47 <a href="http://www.cppblog.com/MemoryGarden/archive/2009/04/07/79217.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj 2720 Copier Reduction</title><link>http://www.cppblog.com/MemoryGarden/archive/2008/09/06/61163.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Sat, 06 Sep 2008 12:00:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2008/09/06/61163.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/61163.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2008/09/06/61163.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/61163.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/61163.html</trackback:ping><description><![CDATA[<br>链接 ：<a style="color: #ff0000;" title="http://acm.pku.edu.cn/JudgeOnline/problem?id=2707"  href="http://acm.pku.edu.cn/JudgeOnline/problem?id=2707">http://acm.pku.edu.cn/JudgeOnline/problem?id=2707</a><br><br>题意 ：就是给你2张纸，能旋转90度，也可以不旋转，求解这两种情况下，能让第一张纸不露出第二张纸的最大缩放比例<br><br>想法 : 求解两种情况的最大比例，然后取大的。此题为简单题目，之所以贴出来，个人感觉代码写的比较好玩。嘿嘿，其实和if&nbsp; else 是一样的。<br><br>代码如下　：<br><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(){<br></span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;d,&nbsp;u,&nbsp;v;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x;<br></span><span style="color: #008080;">5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%lf%lf%lf%lf</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">b,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">c,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">d),&nbsp;a&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;b&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;c&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;d)<br></span><span style="color: #008080;">6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">)(((u&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;c&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;a&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;d&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;b&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;c&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;a&nbsp;:&nbsp;d&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;b)&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;(v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;c&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;b&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;d&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;a&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;c&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;b&nbsp;:&nbsp;d&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;a)&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;u&nbsp;:&nbsp;v)</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">100.0</span><span style="color: #000000;">))&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">100</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;puts(</span><span style="color: #000000;">"</span><span style="color: #000000;">100%</span><span style="color: #000000;">"</span><span style="color: #000000;">)&nbsp;:&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%%\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;x);<br></span><span style="color: #008080;">7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">8</span>&nbsp;<span style="color: #000000;">}</span></div>
<br><br><img src ="http://www.cppblog.com/MemoryGarden/aggbug/61163.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2008-09-06 20:00 <a href="http://www.cppblog.com/MemoryGarden/archive/2008/09/06/61163.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj 2704 Pascal's Travels</title><link>http://www.cppblog.com/MemoryGarden/archive/2008/09/06/61078.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Fri, 05 Sep 2008 17:48:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2008/09/06/61078.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/61078.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2008/09/06/61078.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/61078.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/61078.html</trackback:ping><description><![CDATA[链接 ：<a style="color: #ff0000;" title="http://acm.pku.edu.cn/JudgeOnline/problem?id=2704"  href="http://acm.pku.edu.cn/JudgeOnline/problem?id=2704">http://acm.pku.edu.cn/JudgeOnline/problem?id=2704</a><br><br><br>人生第一个dp，出现在了&nbsp; 2008-09-06 01:00:56 ，铭记这一时刻。(只能说我是菜鸟......but happy)<br><br><br>题意 ：有一个小球，在矩阵上滚动，每次只能向右或者向下滚动，滚动的长度点是矩阵相应位置的数字,停止在滚动后的位置，不能滚动出图外面，0代表死胡同。问能停止在右下角的路径有多少条。<br><br>输入 ：<br><br>
<pre class="sio" style="font-family: 'Courier New',Courier,monospace; font-size: 12pt;">4 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //矩阵范围<br>2331 &nbsp; &nbsp; &nbsp; &nbsp;//矩阵<br>1213<br>1231<br>3110<br><br><br><br><br><br><br>想法 ：开始想到bfs，交过，tle，但是后来想感觉即使不超时也不对，因为一个点有可能走过多次。是我自己的想法。后来越看越像dp了，最后<br>的目标点，到他的路径，是它左边的能走到它的点，和右边能走到它的点的路径的和，那么，这样推上去，就可以划分出它的子问题。(汗，这样写<br>大家不要笑话，因为我没有看过算法导论上的dp)，因该是属于递推吧。再从上往下，一直推到目标点。就可以了。<br><br>只能向右 ：横坐标单调递增<br><br>只能向下 ：纵坐标单调递增<br><br>因为起点的能第一次达到的点的路径个数一定是1，所以最后存储结果的res[0][0] = 1;<br><br><br>核心代码 ：<br><br>1. 因为横纵都是单调递增的，所以横向检测图中从点(small, column)到点(big, column)有没有0值的点，直接枚举每个位置，且不包含<br>两个端点<br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">1</span>&nbsp;<span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;rok(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;s,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;b,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;c){<br></span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i;<br></span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;s&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;b;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">map[i][c])</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br></span><span style="color: #008080;">5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br></span><span style="color: #008080;">6</span>&nbsp;<span style="color: #000000;">}</span></div>
<br><br><br><br>2.因为横纵都是单调递增的，所以横向检测图中从点(row, small)到点(row, big)有没有0值的点，直接枚举每个位置，且不包含<br>两个端点
<br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">1</span>&nbsp;<span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;cok(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;s,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;b,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;r){<br></span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j;<br></span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;s&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;b;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">map[r][i])</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br></span><span style="color: #008080;">5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br></span><span style="color: #008080;">6</span>&nbsp;<span style="color: #000000;">}</span></div>
<br><br><br><br>3.递推的过程，从前往后，进行递推，如果不是只能向右或者向下，是不满足递推的条件的，不是单调的(不知道这里理解的对不对)<br><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res[</span><span style="color: #000000;">0</span><span style="color: #000000;">][</span><span style="color: #000000;">0</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">起始点的第一个到达的点的路径个数一定是1。</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;j&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(res[i][j]&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;j&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">){&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">可达，而且不是右下角的点<br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">向右&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;map[i][j]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;rok(i,&nbsp;i&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;map[i][j],&nbsp;j))&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">若在图内，且从起点到滚动停止点，图中没有0值点</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res[i&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;map[i][j]][j]&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;res[i][j];&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">滚动停止点的路径条数&nbsp;=&nbsp;起始点的路径条数&nbsp;+&nbsp;停止点的路径条数<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">向下</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(j&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;map[i][j]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;cok(j,&nbsp;j&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;map[i][j],&nbsp;i))<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res[i][j&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;map[i][j]]&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;res[i][j];<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br><br><br>ps : 题目提示c或者c++要用long long存储结果，可是"%ld"输出wa了n次，后来看了discuss后改的"%I64d"输出后ac<br><br>&nbsp; &nbsp; &nbsp;
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%I64d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;res[n&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">][n&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">]);</span></div>
<br></pre>
<br><br><img src ="http://www.cppblog.com/MemoryGarden/aggbug/61078.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2008-09-06 01:48 <a href="http://www.cppblog.com/MemoryGarden/archive/2008/09/06/61078.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj 3625 Building Roads</title><link>http://www.cppblog.com/MemoryGarden/archive/2008/09/05/61051.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Fri, 05 Sep 2008 13:29:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2008/09/05/61051.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/61051.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2008/09/05/61051.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/61051.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/61051.html</trackback:ping><description><![CDATA[链接 ： <a style="color: #ff0000;" title="http://acm.pku.edu.cn/JudgeOnline/problem?id=3625"  href="http://acm.pku.edu.cn/JudgeOnline/problem?id=3625">http://acm.pku.edu.cn/JudgeOnline/problem?id=3625</a><br><br>题意 :&nbsp; 将所有农场链接的最小长度，即最小生成树。但是有的 边已经连接完毕<br><br>输入 ：<br><br>
<pre class="sio" style="font-family: 'Courier New',Courier,monospace; font-size: 12pt;">4 1 // 4个点 1个已经连完的边<br>1 1 &nbsp;//点坐标<br>3 1<br>2 3<br>4 3<br>1 4 &nbsp;//连接完毕的点地编号<br><br><br>想法 ：将连接完毕的点地权值更改为0，克鲁斯 + 并查 &nbsp;或者 &nbsp;将已经连接的点先并入一个集合<br><br>核心代码如下 ：<br><br>1. 将已经连接的点先并入一个集合<br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">1</span>&nbsp;<span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;m;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">u,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">v);<br></span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">((u&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;find(u))&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;(v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;find(v))){<br></span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[u]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;v;<br></span><span style="color: #008080;">5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000;">--</span><span style="color: #000000;">;<br></span><span style="color: #008080;">6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br>
<br>2. 并查集合<br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;find(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(x&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;f[x])</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;f[x]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;find(f[x]);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;f[x];<br>}</span></div>
<br><br>3. 克鲁斯卡尔 + 并查<br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">tel&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;el;<br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;make_heap(e,&nbsp;e&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;el,&nbsp;cmp);<br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;tel</span><span style="color: #000000;">--</span><span style="color: #000000;">){<br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">((u&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;find(e[</span><span style="color: #000000;">0</span><span style="color: #000000;">].u))&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;(v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;find(e[</span><span style="color: #000000;">0</span><span style="color: #000000;">].v))){<br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[u]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;v;<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;e[</span><span style="color: #000000;">0</span><span style="color: #000000;">].w;<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pop_heap(e,&nbsp;e&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;tel,&nbsp;cmp);<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br><br><br><br><br></pre>
<br><img src ="http://www.cppblog.com/MemoryGarden/aggbug/61051.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2008-09-05 21:29 <a href="http://www.cppblog.com/MemoryGarden/archive/2008/09/05/61051.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj 1459 Power Network</title><link>http://www.cppblog.com/MemoryGarden/archive/2008/09/05/60974.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Thu, 04 Sep 2008 19:55:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2008/09/05/60974.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/60974.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2008/09/05/60974.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/60974.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/60974.html</trackback:ping><description><![CDATA[链接：<a style="color: #ff0000;" title="http://acm.pku.edu.cn/JudgeOnline/problem?id=1459"  href="http://acm.pku.edu.cn/JudgeOnline/problem?id=1459">http://acm.pku.edu.cn/JudgeOnline/problem?id=1459</a><br><br>题意 ：有一个电力网络，有发电厂，有变压器，又用户，图的意思是容量，以及流量，还有边，以及边的容量，流量。求解用户的最大使用量。<br><br>输入 ：2个测试数据<br>
<pre class="sio" style="font-family: 'Courier New',Courier,monospace; font-size: 12pt;">2 1 1 2 (0,1)20 (1,0)10 (0)15 (1)20 &nbsp; <br><br>
<pre class="sio" style="font-family: 'Courier New',Courier,monospace; font-size: 12pt;">&nbsp;//总共两个点 &nbsp;一个发电厂，一个用户，2条边，(0, 1)点容量为20，(1， 0)点容量为10，编号为0的点是发电厂，即源，编号为1的点是用户，即汇<br></pre>
<br><br>7 2 3 13 (0,0)1 (0,1)2 (0,2)5 (1,0)1 (1,2)8 (2,3)1 (2,4)7 &nbsp;<br>         (3,5)2 (3,6)5 (4,2)7 (4,3)5 (4,5)1 (6,0)5<br>         (0)5 (1)2 (3)2 (4)1 (5)4<br><br>//意思同上<br></pre>
<br><br>想法 ：<br>这个题就是一个单纯的不能再单纯的网络流了，锻炼了一下英语能力。设一个源s和一个汇t，我设的是第m个点位源，第m + 1个点位汇。最后把源s和发电厂连接，边的容量为发电厂的容量，将用户与汇t连接，容量为用户的容量<br><br>然后fm最大流 ：不断找源s和汇t的路径，选取瓶颈容两，更新剩余图，直至不能更新。剩余容量和为结果。时间复杂度比较高。望高手指点更好的算法。<br><br><br>代码如下 ：<br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">queue</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;max&nbsp;500</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;std;<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n,&nbsp;np,&nbsp;nc,&nbsp;m,&nbsp;r[max][max],&nbsp;ok,&nbsp;judge[max],&nbsp;p[max],&nbsp;res;<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">queue</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;qu,&nbsp;qq;<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;gao(){<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j,&nbsp;s,&nbsp;t;<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;qu.push(n);<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;judge[n]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;qu.size();<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">s){ok&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;}<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(s</span><span style="color: #000000;">--</span><span style="color: #000000;">){<br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;qu.front();<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qu.pop();<br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(t&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">){ok&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;}<br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(r[t][i]&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">!</span><span style="color: #000000;">judge[i]){<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qu.push(i);<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;judge[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;t;<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;update(){<br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j,&nbsp;u,&nbsp;v,&nbsp;min&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">999999999</span><span style="color: #000000;">;<br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;u&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;p[n&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">];<br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(u&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">){<br></span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(r[u][v]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;min)min&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;r[u][v];<br></span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;u;<br></span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;p[u];<br></span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;u&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;p[n&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">];<br></span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(u&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">){<br></span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r[u][v]&nbsp;</span><span style="color: #000000;">-=</span><span style="color: #000000;">&nbsp;min;<br></span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r[v][u]&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;min;<br></span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;u;<br></span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;p[u];<br></span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;res&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;min;<br></span><span style="color: #008080;">47</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">48</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(){<br></span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">1459.in</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,stdin);<br></span><span style="color: #008080;">50</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">1459.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,stdout);<br></span><span style="color: #008080;">51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j,&nbsp;u,&nbsp;v,&nbsp;w;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;c;<br></span><span style="color: #008080;">52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">np,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">nc,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m)&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br></span><span style="color: #008080;">53</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;res&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">54</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(r,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(r));<br></span><span style="color: #008080;">55</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;m;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(getchar()</span><span style="color: #000000;">!=</span><span style="color: #000000;">'</span><span style="color: #000000;">(</span><span style="color: #000000;">'</span><span style="color: #000000;">);<br></span><span style="color: #008080;">57</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d,%d)%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">u,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">v,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">w);<br></span><span style="color: #008080;">58</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r[u][v]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;w;<br></span><span style="color: #008080;">59</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">60</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;np;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">61</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(getchar()</span><span style="color: #000000;">!=</span><span style="color: #000000;">'</span><span style="color: #000000;">(</span><span style="color: #000000;">'</span><span style="color: #000000;">);<br></span><span style="color: #008080;">62</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d)%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">u,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">w);<br></span><span style="color: #008080;">63</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r[n][u]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;w;<br></span><span style="color: #008080;">64</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">65</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;nc;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">66</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(getchar()</span><span style="color: #000000;">!=</span><span style="color: #000000;">'</span><span style="color: #000000;">(</span><span style="color: #000000;">'</span><span style="color: #000000;">);<br></span><span style="color: #008080;">67</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d)%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">u,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">w);<br></span><span style="color: #008080;">68</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r[u][n&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;w;<br></span><span style="color: #008080;">69</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">70</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(ok){<br></span><span style="color: #008080;">71</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;qu&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;qq;<br></span><span style="color: #008080;">72</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(p,&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(p));<br></span><span style="color: #008080;">73</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(judge,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(judge));<br></span><span style="color: #008080;">74</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gao();<br></span><span style="color: #008080;">75</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(ok)<br></span><span style="color: #008080;">76</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;update();<br></span><span style="color: #008080;">77</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">78</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;res);<br></span><span style="color: #008080;">79</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">80</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">81</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">82</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">83</span>&nbsp;<span style="color: #000000;"></span></div>
<br><br>ps ： 输入搞了我几次re，比较有意思。<br><br><img src ="http://www.cppblog.com/MemoryGarden/aggbug/60974.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2008-09-05 03:55 <a href="http://www.cppblog.com/MemoryGarden/archive/2008/09/05/60974.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj 2253 Frogger</title><link>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60960.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Thu, 04 Sep 2008 14:07:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60960.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/60960.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60960.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/60960.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/60960.html</trackback:ping><description><![CDATA[链接 ：<a style="color: #ff0000;" title="http://acm.pku.edu.cn/JudgeOnline/problem?id=2253"  href="http://acm.pku.edu.cn/JudgeOnline/problem?id=2253http://acm.pku.edu.cn/JudgeOnline/problem?id=2253">http://acm.pku.edu.cn/JudgeOnline/problem?id=2253</a><br><br>题意 ：两个forger 一个froger 要蹦到另外一个froger处 他们的最短距离是这样定义的 ： The frog distance (humans also call it minimax distance) between two stones therefore is defined as the minimum necessary jump range over all possible paths between the two stones.
即为 ：两个石头之间的frog distance就是在这两个石头之间的所有路径中最大跳(necessary jump range)最小的。 (以上引自<a title="aowarmen's blog"  href="http://www.bhjsj.cn/aowarmen/?p=60">aowarmen's blog</a>)<br><br>想法 ：我们通常的dj方法的最短路径是进行边的松弛，判断条件为 d[i] &gt; d[w] + map[w][i]&nbsp; 即对边的松弛，根据三角不等式，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 更新后为 d[i] = d[w] + map[w][i];而这个&#8220;最短路径&#8221;通过的路径里面的最大值，只是判断条件和更新变一下。&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 即 d[j] &gt; (d[w] &gt; map[w][i] ? d[w] : map[w][i])
更新为选择点的最短距离d[w]和（u， v）的距离里面最大的那个，进行更新.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 即 d[i] = d[w] &gt; map[w][i] ? d[w] : map[w][i];
<br><br>ps : 看discuss里面有用最小生成树做的，而且<a title="aowarmen"  href="http://www.bhjsj.cn/aowarmen/?p=60">aowarmen</a>是用参数搜索做出来的，同样0ms，想不通 + ym中。。。请各位知道的。<br>&nbsp;&nbsp;&nbsp;&nbsp; 或者有更好的方法的，&nbsp; 能提示一下。<br><br>代码如下 ：<br><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">math.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;max&nbsp;201</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;m,&nbsp;n;<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;map[max][max],&nbsp;p[max][</span><span style="color: #000000;">2</span><span style="color: #000000;">];<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;dj(){<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j,&nbsp;w,&nbsp;s[max];</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;d[max],&nbsp;min;<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;memset(s,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(s));<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;m;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)d[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;s[</span><span style="color: #000000;">0</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;d[</span><span style="color: #000000;">0</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;m;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(map[</span><span style="color: #000000;">0</span><span style="color: #000000;">][i])d[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;map[</span><span style="color: #000000;">0</span><span style="color: #000000;">][i];<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;m;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">s[i]&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;d[i]&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(w&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;d[i]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;min){<br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;d[i];<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;i;<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(w&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">)</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s[w]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;m;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(map[w][i]){<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(d[i]&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;(d[w]&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;map[w][i]&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;d[w]&nbsp;:&nbsp;map[w][i])){<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;d[w]&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;map[w][i]&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;d[w]&nbsp;:&nbsp;map[w][i];<br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">Frog&nbsp;Distance&nbsp;=&nbsp;%.3lf\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;d[</span><span style="color: #000000;">1</span><span style="color: #000000;">]);<br></span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(){<br></span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">2253.in</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,stdin);<br></span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">2253.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,stdout);<br></span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j,&nbsp;c&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m),&nbsp;m){<br></span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">Scenario&nbsp;#%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;c</span><span style="color: #000000;">++</span><span style="color: #000000;">);<br></span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(map,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(map));<br></span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;m;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%lf%lf</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">p[i][</span><span style="color: #000000;">0</span><span style="color: #000000;">],&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">p[i][</span><span style="color: #000000;">1</span><span style="color: #000000;">]);<br></span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;m;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;j&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;m;&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map[i][j]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;map[j][i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;sqrt((p[j][</span><span style="color: #000000;">0</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;p[i][</span><span style="color: #000000;">0</span><span style="color: #000000;">])&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;(p[j][</span><span style="color: #000000;">0</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;p[i][</span><span style="color: #000000;">0</span><span style="color: #000000;">])&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;(p[j][</span><span style="color: #000000;">1</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;p[i][</span><span style="color: #000000;">1</span><span style="color: #000000;">])&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;(p[j][</span><span style="color: #000000;">1</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;p[i][</span><span style="color: #000000;">1</span><span style="color: #000000;">]));<br></span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dj();puts(</span><span style="color: #000000;">""</span><span style="color: #000000;">);<br></span><span style="color: #008080;">47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">50</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">51</span>&nbsp;<span style="color: #000000;"></span></div>
<br><br><br><br><br><img src ="http://www.cppblog.com/MemoryGarden/aggbug/60960.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2008-09-04 22:07 <a href="http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60960.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj 1860 Currency Exchange</title><link>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60912.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Thu, 04 Sep 2008 06:55:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60912.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/60912.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60912.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/60912.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/60912.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;"> <br><a style="color: #ff0000;" title="http://acm.pku.edu.cn/JudgeOnline/problem?id=1860" href="http://acm.pku.edu.cn/JudgeOnline/problem?id=1860">http://acm.pku.edu.cn/JudgeOnline/problem?id=1860</a><br><br><br>感谢aowarmen 指出我的错误<br><br><br>&nbsp;<br>题意 ： 就是套汇的问题，汇率Rab， 增加了一个手续费&nbsp; </span><span style="color: #008080;">Cab </span><span style="color: #008080;">。。。。。。。每次的结果是&nbsp; (本金 - 手续费) * 汇率，而且一个人拥有的钱的类型是已知的，拥有的value 钱的个数也是已知的， 问你能不能增值。<br><br><br><br>输入 ：</span><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: Arial; font-size: 19px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<pre class="sio" style="font-family: 'Courier New',Courier,monospace; font-size: 12pt;">3 2 1 20.0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //钱种类个数 &nbsp;汇率的个数，拥有第几种钱， 拥有多少钱<br>1 2 1.00 1.00 1.00 1.00 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//钱a， 钱b， rab， cab， rba， cba<br>2 3 1.10 1.00 1.10 1.00</pre>
</span><br>想法： 应用bellman-ford ：<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 应用bellman求解最短路径（上界松弛）和最长路径（下界松弛）的时候，都是松弛&nbsp; 点 - 1&nbsp; 次， 然后再看能否再进行松弛了。如果能，就证明有环。否则为最短或者最长路径（希望错了请大家指出）<br><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当时看这个题的时候，被bellman求解最短路给束缚了， 即循环是&nbsp; 点 - 1&nbsp; 次， 但是这种最长路的正环不一定就在&nbsp; 点 - 1 次松弛后，就能让目标点符合要求，也即是说不一定能松弛连接目标点的边，因为要看d[u]与d[目标点(v)]的关系，也就是边，就像最短路得负环一样，他们是无限的增长下去的。<br><br>所以这个题 循环的终止条件有2个 ： <br><br>1。 当不能松弛的时候停止， 这样就代表这个图中没有正环，这样判断一下d[x]是否大于value就可以了。<br>2。 发现d[x] 〉value了，这种时候有可能是图有正环，也有可能图还没有松弛完毕，但是只要发现满足条件，就可以了。<br><br><br>对了，这个题还要注意精度<br><br>代码如下：<br><span style="color: #008080;"><br>&nbsp;1</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;eps&nbsp;1e-8</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;std;<br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;m,&nbsp;n,&nbsp;x,&nbsp;el;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;value;<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;E{<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;u,&nbsp;v;<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;r,&nbsp;c;<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">}e[</span><span style="color: #000000;">1001</span><span style="color: #000000;">];<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;bellman(){<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j,&nbsp;f,&nbsp;p[</span><span style="color: #000000;">102</span><span style="color: #000000;">],&nbsp;u,&nbsp;v;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;r,&nbsp;c,&nbsp;d[</span><span style="color: #000000;">102</span><span style="color: #000000;">];<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;memset(d,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(d));<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;d[x]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;value;<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(d[x]&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;value&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;eps){<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;j&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;el;&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(d[e[j].v]&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;eps&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;(d[e[j].u]&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;e[j].c)&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;e[j].r&nbsp;){<br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d[e[j].v]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(d[e[j].u]&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;e[j].c)&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;e[j].r;<br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[e[j].v]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;e[j].u;<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">f)<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;d[x]&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;value&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;eps;<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(){<br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">1860.in</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,stdin);<br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">1860.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,stdout);<br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j,&nbsp;u,&nbsp;v,&nbsp;f;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;ruv,&nbsp;cuv,&nbsp;rvu,&nbsp;cvu;<br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d%d%lf</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">x,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">value)&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br></span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;el&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d%lf%lf%lf%lf</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">u,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">v,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">ruv,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">cuv,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">rvu,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">cvu);<br></span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e[el].u&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;u;<br></span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e[el].v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;v;<br></span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e[el].r&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;ruv;<br></span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e[el</span><span style="color: #000000;">++</span><span style="color: #000000;">].c&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cuv;<br></span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e[el].u&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;v;<br></span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e[el].v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;u;<br></span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e[el].r&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;rvu;<br></span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e[el</span><span style="color: #000000;">++</span><span style="color: #000000;">].c&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cvu;<br></span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(bellman())puts(</span><span style="color: #000000;">"</span><span style="color: #000000;">YES</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;puts(</span><span style="color: #000000;">"</span><span style="color: #000000;">NO</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">50</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">51</span>&nbsp;<span style="color: #000000;"></span></div>
<br> <img src ="http://www.cppblog.com/MemoryGarden/aggbug/60912.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2008-09-04 14:55 <a href="http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60912.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>joj 2346 cut cakes</title><link>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60877.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Wed, 03 Sep 2008 16:32:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60877.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/60877.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60877.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/60877.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/60877.html</trackback:ping><description><![CDATA[
<div id="blog_text" class="cnt">
<div class="cnt">
<p>感谢&#160;&#160;   mengyou  完全是他教我的。</p>
<p><a href="http://acm.jlu.edu.cn/joj/showproblem.php?pid=2346">http://acm.jlu.edu.cn/joj/showproblem.php?pid=2346</a></p>
<p>二分 ：首先，这种题目，结果一定在一定的范围内部，一定会找到结果。所以可以应用二分。</p>
<p>二分形成的查找树，貌似叫做线段树。。。嗯，看mengyou搞得时候偶尔问的。</p>
<p>很猛很猛，因为每次砍了一半。。这是多么可怕。。。</p>
<p>有机会一定要把线段树搞明白了。。。。因为实在是太快了。</p>
<p>这里我们查找的是刀口的长度，而是用上下两个部分的面积的比和给的比进行比较，来进行二分查找的。</p>
<p>而上面的面积可以各种约分。。。。</p>
<p>mengyou说过，sin  和  cos  精确度很高。tan尽量不要应用。。</p>
<p>嗯。。。扇形的面积是所占的弧度 与 360度 的比值，所以扇形的面积就是这个比值 * 园的面积（PI * R * R） 也就是
而我们传入的是刀口长度的一半，也就是三角形的 a ，r已知，这样可以求得b sqrt（r * r - a * a）
然后下面的弓形的面积就是扇形的面积减去两个小三角形的面积，公式里面的很多东西都可以勾掉。对了，由于asin（a /
r）得到的是弧度，所以要乘一个180 ，再除一个PI 勾了以后，由于题目的r = 1
所以面积就相当的简洁。。。然后就和普通的二分一样了。这里就让 begin || end == mid
就可以了。所以最终一定会找到解得。所有的速度，都归结于那颗仰慕的树。。。。真是快。。。。</p>
<p> </p>
<p>希望大牛指点。</p>
<p> </p>
<p>再次感谢mengyou。</p>
<p><br></p>
<p><br></p>
<p>
</p><div style="border-left-color: rgb(204, 204, 204); padding-top: 4px; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&#160;1</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;2</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">math.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;3</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&#160;PI&#160;acos(-1.0)</span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;4</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&#160;B&#160;1e-8</span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;5</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#160;cmp,&#160;area,&#160;a,&#160;b;<br></span><span style="color: #008080;">&#160;6</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#160;getb(</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#160;ta){<br></span><span style="color: #008080;">&#160;7</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#160;b&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;sqrt(</span><span style="color: #000000;">1.0</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">&#160;ta&#160;</span><span style="color: #000000;">*</span><span style="color: #000000;">&#160;ta);<br></span><span style="color: #008080;">&#160;8</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#160;sja&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;ta&#160;</span><span style="color: #000000;">*</span><span style="color: #000000;">&#160;b;<br></span><span style="color: #008080;">&#160;9</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#160;temp&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;asin(ta)&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">&#160;sja;<br></span><span style="color: #008080;">10</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;temp&#160;</span><span style="color: #000000;">/</span><span style="color: #000000;">&#160;(area&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">&#160;temp);<br></span><span style="color: #008080;">11</span>&#160;<span style="color: #000000;">}<br></span><span style="color: #008080;">12</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;main(){<br></span><span style="color: #008080;">13</span>&#160;<span style="color: #000000;">freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">2346.in</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;stdin);<br></span><span style="color: #008080;">14</span>&#160;<span style="color: #000000;">freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">2346.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;stdout);<br></span><span style="color: #008080;">15</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#160;begin,&#160;end,&#160;mid,&#160;bi,&#160;temp;<br></span><span style="color: #008080;">16</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;i,&#160;j;<br></span><span style="color: #008080;">17</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%lf%lf</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">b)&#160;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br></span><span style="color: #008080;">18</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;begin&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0.0</span><span style="color: #000000;">;end&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">2.0</span><span style="color: #000000;">;area&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;PI;<br></span><span style="color: #008080;">19</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(a&#160;</span><span style="color: #000000;">></span><span style="color: #000000;">&#160;b)&#160;bi&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;b&#160;</span><span style="color: #000000;">/</span><span style="color: #000000;">&#160;a;<br></span><span style="color: #008080;">20</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&#160;bi&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;a&#160;</span><span style="color: #000000;">/</span><span style="color: #000000;">&#160;b;<br></span><span style="color: #008080;">21</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br></span><span style="color: #008080;">22</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;mid&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;(begin&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;end)&#160;</span><span style="color: #000000;">*</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0.5</span><span style="color: #000000;">;<br></span><span style="color: #008080;">23</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;temp&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;getb(mid&#160;</span><span style="color: #000000;">*</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0.5</span><span style="color: #000000;">);<br></span><span style="color: #008080;">24</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(fabs(temp&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">&#160;bi)&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;B)</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br></span><span style="color: #008080;">25</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(temp&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;bi)begin&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;mid;<br></span><span style="color: #008080;">26</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&#160;end&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;mid;<br></span><span style="color: #008080;">27</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;}<br></span><span style="color: #008080;">28</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%.4lf\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;mid);<br></span><span style="color: #008080;">29</span>&#160;<span style="color: #000000;">}<br></span><span style="color: #008080;">30</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">31</span>&#160;<span style="color: #000000;">}</span></div>
<br><p>&#160;</p>
</div>
</div><img src ="http://www.cppblog.com/MemoryGarden/aggbug/60877.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2008-09-04 00:32 <a href="http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60877.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj 2186 Popular Cows</title><link>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60876.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Wed, 03 Sep 2008 16:29:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60876.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/60876.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60876.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/60876.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/60876.html</trackback:ping><description><![CDATA[
<img src="http://img.baidu.com/hi/ldw/w_0034.gif"> 写了好长时间。。。。才过得。<img src="http://img.baidu.com/hi/jd/j_0022.gif">太不容易了<br>
<br>
<br>
<a href="http://acm.pku.edu.cn/JudgeOnline/problem?id=2186" target="_blank">http://acm.pku.edu.cn/JudgeOnline/problem?id=2186</a><br>
<br>
题目大意  ： 有一些牛，然后他们互相仰慕，为有向图，仰慕可传递， a仰慕b， b仰慕c，a就仰慕c，让你求<br>
<br>
解被所有牛仰慕的牛的个数。(貌似要找大牛呢。。。。汗)<br>
<br>
<br>
思路： 好多大牛在disduss
里面也说了，就是有向图的强连通分量，然后讲这个强连通分两压缩成一个点，这样，再重新构图，在新构的图中，找到出度为0的点，代表这个连同分量里面的点
不指向别的连同分量的点，也就是说，这些牛不仰慕别的牛。当然，如果这样的，出度为0的连同分两的点大于1，也就是重新生成的图不是连同的话，那么就代表
肯定不存在被所有牛都仰慕的牛了。<br>
<br>
ps ：
上来搞了一把矩阵。。。然后wa。。。然后找报告。。。然后找到代码。。。然后rand数据。。。然后比较。。。最后竟然发现报告的程序有bug。。。。
瀑布汗。。。。。最后感觉改的没问题了。。。交。。。。mle。。。。瞬间崩塌。。。。早晨起来接着搞。。。。最后链存过的。。。。。<br>
<br>
<br>
<br>
方法 ： 求解连同分量正dfs，求解后续遍历序号，按序号从大到小dfs原图的逆图。这样，能求找到每个点属于哪个连同分量。 然后就一顿乱gao。。。时间复杂度巨高。。。。<br><br>
<div style="border-left-color: rgb(204, 204, 204); padding-top: 4px; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&#160;&#160;1</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;&#160;2</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;&#160;3</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&#160;max&#160;10001</span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;&#160;4</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&#160;std;<br></span><span style="color: #008080;">&#160;&#160;5</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;m,&#160;n,&#160;judge[max],&#160;back[max],&#160;backnum,&#160;tback[max],&#160;degree[max],&#160;belon[max];<br></span><span style="color: #008080;">&#160;&#160;6</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&#160;P{<br></span><span style="color: #008080;">&#160;&#160;7</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;v;<br></span><span style="color: #008080;">&#160;&#160;8</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;P</span><span style="color: #000000;">*</span><span style="color: #000000;">&#160;next;<br></span><span style="color: #008080;">&#160;&#160;9</span>&#160;<span style="color: #000000;">};<br></span><span style="color: #008080;">&#160;10</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&#160;zdfs(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;u,&#160;P</span><span style="color: #000000;">**</span><span style="color: #000000;">&#160;map){<br></span><span style="color: #008080;">&#160;11</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;i;<br></span><span style="color: #008080;">&#160;12</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;judge[u]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&#160;13</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;P</span><span style="color: #000000;">*</span><span style="color: #000000;">&#160;p&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;map[u];<br></span><span style="color: #008080;">&#160;14</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(p){<br></span><span style="color: #008080;">&#160;15</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">judge[p</span><span style="color: #000000;">-></span><span style="color: #000000;">v])<br></span><span style="color: #008080;">&#160;16</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;zdfs(p</span><span style="color: #000000;">-></span><span style="color: #000000;">v,&#160;map);<br></span><span style="color: #008080;">&#160;17</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;p&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;p</span><span style="color: #000000;">-></span><span style="color: #000000;">next;<br></span><span style="color: #008080;">&#160;18</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">&#160;19</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;back[u]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">++</span><span style="color: #000000;">backnum;<br></span><span style="color: #008080;">&#160;20</span>&#160;<span style="color: #000000;">}<br></span><span style="color: #008080;">&#160;21</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&#160;fdfs(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;u,&#160;P</span><span style="color: #000000;">**</span><span style="color: #000000;">&#160;tmap,&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;d){<br></span><span style="color: #008080;">&#160;22</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;i;<br></span><span style="color: #008080;">&#160;23</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;P</span><span style="color: #000000;">*</span><span style="color: #000000;">&#160;p&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;tmap[u];<br></span><span style="color: #008080;">&#160;24</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;belon[u]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;d;<br></span><span style="color: #008080;">&#160;25</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;judge[u]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&#160;26</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(p){<br></span><span style="color: #008080;">&#160;27</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">judge[p</span><span style="color: #000000;">-></span><span style="color: #000000;">v])<br></span><span style="color: #008080;">&#160;28</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;fdfs(p</span><span style="color: #000000;">-></span><span style="color: #000000;">v,&#160;tmap,&#160;d);<br></span><span style="color: #008080;">&#160;29</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;p&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;p</span><span style="color: #000000;">-></span><span style="color: #000000;">next;<br></span><span style="color: #008080;">&#160;30</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">&#160;31</span>&#160;<span style="color: #000000;">}<br></span><span style="color: #008080;">&#160;32</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&#160;fengle(P</span><span style="color: #000000;">**</span><span style="color: #000000;">&#160;map,&#160;P</span><span style="color: #000000;">**</span><span style="color: #000000;">&#160;tmap){<br></span><span style="color: #008080;">&#160;33</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;i,&#160;j,&#160;kn&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&#160;u,&#160;v,&#160;wrong&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&#160;ele&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&#160;res&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;P</span><span style="color: #000000;">*</span><span style="color: #000000;">&#160;p;<br></span><span style="color: #008080;">&#160;34</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;m;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">&#160;35</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">judge[i])<br></span><span style="color: #008080;">&#160;36</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;zdfs(i,&#160;map);<br></span><span style="color: #008080;">&#160;37</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">&#160;38</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;m;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&#160;39</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tback[back[i]]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;i;<br></span><span style="color: #008080;">&#160;40</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;memset(judge,&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&#160;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(judge));<br></span><span style="color: #008080;">&#160;41</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;m,&#160;j&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">>=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i</span><span style="color: #000000;">--</span><span style="color: #000000;">){<br></span><span style="color: #008080;">&#160;42</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">judge[tback[i]]){<br></span><span style="color: #008080;">&#160;43</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;fdfs(tback[i],&#160;tmap,&#160;j</span><span style="color: #000000;">++</span><span style="color: #000000;">);<br></span><span style="color: #008080;">&#160;44</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;kn</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&#160;45</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">&#160;46</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">&#160;47</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(u&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;u&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;m;&#160;u</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">&#160;48</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;p&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;map[u];<br></span><span style="color: #008080;">&#160;49</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(p){<br></span><span style="color: #008080;">&#160;50</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;v&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;p&#160;</span><span style="color: #000000;">-></span><span style="color: #000000;">&#160;v;<br></span><span style="color: #008080;">&#160;51</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(belon[u]&#160;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&#160;belon[v])<br></span><span style="color: #008080;">&#160;52</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;degree[belon[u]]</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&#160;53</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;p&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;p</span><span style="color: #000000;">-></span><span style="color: #000000;">next;<br></span><span style="color: #008080;">&#160;54</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">&#160;55</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">&#160;56</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;kn;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">&#160;57</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">degree[i]){<br></span><span style="color: #008080;">&#160;58</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;wrong</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&#160;59</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ele&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;i;<br></span><span style="color: #008080;">&#160;60</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">&#160;61</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">&#160;62</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(wrong&#160;</span><span style="color: #000000;">></span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br></span><span style="color: #008080;">&#160;63</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">0\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&#160;64</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">&#160;65</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;m;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&#160;66</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(belon[i]&#160;</span><span style="color: #000000;">==</span><span style="color: #000000;">&#160;ele)<br></span><span style="color: #008080;">&#160;67</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;res</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&#160;68</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;res);<br></span><span style="color: #008080;">&#160;69</span>&#160;<span style="color: #000000;">}<br></span><span style="color: #008080;">&#160;70</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;main(){<br></span><span style="color: #008080;">&#160;71</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;i,&#160;j,&#160;u,&#160;v;<br></span><span style="color: #008080;">&#160;72</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n)&#160;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br></span><span style="color: #008080;">&#160;73</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;P</span><span style="color: #000000;">*</span><span style="color: #000000;">&#160;map[max];P</span><span style="color: #000000;">*</span><span style="color: #000000;">&#160;tmap[max];P</span><span style="color: #000000;">*</span><span style="color: #000000;">&#160;l;P</span><span style="color: #000000;">*</span><span style="color: #000000;">&#160;t;<br></span><span style="color: #008080;">&#160;74</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;memset(judge,&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&#160;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(judge));<br></span><span style="color: #008080;">&#160;75</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;memset(degree,&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&#160;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(degree));<br></span><span style="color: #008080;">&#160;76</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;backnum&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&#160;77</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;max;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&#160;78</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;map[i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;tmap[i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;NULL;<br></span><span style="color: #008080;">&#160;79</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;n;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">&#160;80</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">u,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">v);<br></span><span style="color: #008080;">&#160;81</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;l&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&#160;P;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">正图</span><span style="color: #008000;"><br></span><span style="color: #008080;">&#160;82</span>&#160;<span style="color: #008000;"></span><span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;l</span><span style="color: #000000;">-></span><span style="color: #000000;">v&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;v;<br></span><span style="color: #008080;">&#160;83</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;l</span><span style="color: #000000;">-></span><span style="color: #000000;">next&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;map[u];<br></span><span style="color: #008080;">&#160;84</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;map[u]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;l;<br></span><span style="color: #008080;">&#160;85</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;l&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&#160;P;&#160;&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">反图</span><span style="color: #008000;"><br></span><span style="color: #008080;">&#160;86</span>&#160;<span style="color: #008000;"></span><span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;l</span><span style="color: #000000;">-></span><span style="color: #000000;">v&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;u;<br></span><span style="color: #008080;">&#160;87</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;l</span><span style="color: #000000;">-></span><span style="color: #000000;">next&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;tmap[v];<br></span><span style="color: #008080;">&#160;88</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tmap[v]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;l;<br></span><span style="color: #008080;">&#160;89</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">&#160;90</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;fengle(map,&#160;tmap);<br></span><span style="color: #008080;">&#160;91</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;m;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">释放</span><span style="color: #008000;"><br></span><span style="color: #008080;">&#160;92</span>&#160;<span style="color: #008000;"></span><span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;l&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;map[i];<br></span><span style="color: #008080;">&#160;93</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(map[i]){<br></span><span style="color: #008080;">&#160;94</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;l&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;map[i];<br></span><span style="color: #008080;">&#160;95</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;map[i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;map[i]</span><span style="color: #000000;">-></span><span style="color: #000000;">next;<br></span><span style="color: #008080;">&#160;96</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;delete&#160;l;<br></span><span style="color: #008080;">&#160;97</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">&#160;98</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">&#160;99</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;m;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">释放</span><span style="color: #008000;"><br></span><span style="color: #008080;">100</span>&#160;<span style="color: #008000;"></span><span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;l&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;tmap[i];<br></span><span style="color: #008080;">101</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(tmap[i]){<br></span><span style="color: #008080;">102</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;l&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;map[i];<br></span><span style="color: #008080;">103</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tmap[i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;tmap[i]</span><span style="color: #000000;">-></span><span style="color: #000000;">next;<br></span><span style="color: #008080;">104</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;delete&#160;l;<br></span><span style="color: #008080;">105</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">106</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">107</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">108</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">109</span>&#160;<span style="color: #000000;">}</span></div>
<br><br><br><img src ="http://www.cppblog.com/MemoryGarden/aggbug/60876.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2008-09-04 00:29 <a href="http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60876.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>pku 2421 Constructing Roads</title><link>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60875.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Wed, 03 Sep 2008 16:27:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60875.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/60875.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60875.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/60875.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/60875.html</trackback:ping><description><![CDATA[
008-08-29  17:37
<a href="http://acm.pku.edu.cn/JudgeOnline/problem?id=2421" target="_blank">http://acm.pku.edu.cn/JudgeOnline/problem?id=2421</a><br>
<br>
<br>
<img src="http://img.baidu.com/hi/jd/j_0024.gif">这个题没有做出来，完全归咎于自己没有对最小生成树理解透彻。<br>
<br>
题目 ： 最小生成树，然后下面有个数，代表已经修完的边了。。。。。已经修完了，不就是免费了么。。。。我疯了。。。。(不是自己想到的)&#160;&#160;   而且还看错题了。。。明明让求和。。。我求得是最小的。。。。。<img src="http://img.baidu.com/hi/jd/j_0016.gif"><br>
<br>
<br>
希望下次有点记性。。。。没少干过这事<img src="http://img.baidu.com/hi/jd/j_0012.gif"><br><br>
<div style="border-left-color: rgb(204, 204, 204); padding-top: 4px; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&#160;1</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;2</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;3</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">algorithm</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;4</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&#160;max&#160;101</span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;5</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&#160;std;<br></span><span style="color: #008080;">&#160;6</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;m,&#160;n,&#160;p[max],&#160;dc;<br></span><span style="color: #008080;">&#160;7</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&#160;E{<br></span><span style="color: #008080;">&#160;8</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;u,&#160;v,&#160;w;<br></span><span style="color: #008080;">&#160;9</span>&#160;<span style="color: #000000;">}e[</span><span style="color: #000000;">100000</span><span style="color: #000000;">];<br></span><span style="color: #008080;">10</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&#160;D{<br></span><span style="color: #008080;">11</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;u,&#160;v;<br></span><span style="color: #008080;">12</span>&#160;<span style="color: #000000;">}d[</span><span style="color: #000000;">100000</span><span style="color: #000000;">];<br></span><span style="color: #008080;">13</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;find(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;x){<br></span><span style="color: #008080;">14</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(x&#160;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&#160;p[x])&#160;&#160;&#160;&#160;<br></span><span style="color: #008080;">15</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;p[x]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;find(p[x]);<br></span><span style="color: #008080;">16</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;p[x];<br></span><span style="color: #008080;">17</span>&#160;<span style="color: #000000;">}<br></span><span style="color: #008080;">18</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;cmp(E&#160;a,&#160;E&#160;b){<br></span><span style="color: #008080;">19</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;a.w&#160;</span><span style="color: #000000;">></span><span style="color: #000000;">&#160;b.w;<br></span><span style="color: #008080;">20</span>&#160;<span style="color: #000000;">}<br></span><span style="color: #008080;">21</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;main(){<br></span><span style="color: #008080;">22</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;i,&#160;j,&#160;u,&#160;v,&#160;w,&#160;sum,&#160;t,&#160;c,&#160;tc,&#160;min;<br></span><span style="color: #008080;">23</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m)&#160;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br></span><span style="color: #008080;">24</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;n&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;dc&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;c&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;sum&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">25</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;max;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">26</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;p[i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;i;<br></span><span style="color: #008080;">27</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;m;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">28</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;j&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;m;&#160;j</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">29</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">t);<br></span><span style="color: #008080;">30</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(j&#160;</span><span style="color: #000000;">></span><span style="color: #000000;">&#160;i&#160;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&#160;t){<br></span><span style="color: #008080;">31</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[c].u&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;i;<br></span><span style="color: #008080;">32</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[c].v&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;j;<br></span><span style="color: #008080;">33</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[c</span><span style="color: #000000;">++</span><span style="color: #000000;">].w&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;t;<br></span><span style="color: #008080;">34</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">35</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">36</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">dc);<br></span><span style="color: #008080;">37</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;dc;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">38</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">u,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">v);<br></span><span style="color: #008080;">39</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;j&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;c;&#160;j</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">40</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(u&#160;</span><span style="color: #000000;">==</span><span style="color: #000000;">&#160;e[j].u&#160;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&#160;v&#160;</span><span style="color: #000000;">==</span><span style="color: #000000;">&#160;e[j].v&#160;</span><span style="color: #000000;">||</span><span style="color: #000000;">&#160;v&#160;</span><span style="color: #000000;">==</span><span style="color: #000000;">&#160;e[j].u&#160;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&#160;u&#160;</span><span style="color: #000000;">==</span><span style="color: #000000;">&#160;e[j].v)<br></span><span style="color: #008080;">41</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[j].w&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">42</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">43</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tc&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;c;<br></span><span style="color: #008080;">44</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;make_heap(e,&#160;e&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;c,&#160;cmp);<br></span><span style="color: #008080;">45</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(n&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;n&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;m;&#160;tc</span><span style="color: #000000;">--</span><span style="color: #000000;">){<br></span><span style="color: #008080;">46</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">((u&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;find(e[</span><span style="color: #000000;">0</span><span style="color: #000000;">].u))&#160;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&#160;(v&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;find(e[</span><span style="color: #000000;">0</span><span style="color: #000000;">].v))){<br></span><span style="color: #008080;">47</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;n</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br></span><span style="color: #008080;">48</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;p[u]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;v;<br></span><span style="color: #008080;">49</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sum&#160;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&#160;e[</span><span style="color: #000000;">0</span><span style="color: #000000;">].w;<br></span><span style="color: #008080;">50</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">51</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;pop_heap(e,&#160;e&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;tc,&#160;cmp);<br></span><span style="color: #008080;">52</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">53</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;sum);<br></span><span style="color: #008080;">54</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">55</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">56</span>&#160;<span style="color: #000000;">}</span></div>
<br><img src ="http://www.cppblog.com/MemoryGarden/aggbug/60875.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2008-09-04 00:27 <a href="http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60875.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj 1789 Truck History</title><link>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60874.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Wed, 03 Sep 2008 16:26:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60874.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/60874.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60874.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/60874.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/60874.html</trackback:ping><description><![CDATA[
竟然一次就过了。。。。真是罕见。。<img src="http://img.baidu.com/hi/jd/j_0016.gif"><br>
<a href="http://hi.baidu.com/memorygarden/blog/item/f7a46cc353a2fe33e4dd3bd8.html?id=1789" target="_blank"><br>
</a><a href="http://acm.pku.edu.cn/JudgeOnline/problem?id=1789" target="_blank">http://acm.pku.edu.cn/JudgeOnline/problem?id=1789</a><br>
<br>
题意 ：<img src="http://img.baidu.com/hi/jd/j_0025.gif">看ｄｉｓｃｕｓ了。。。。就是每个字符串相同位置，位置不同的，这样，这两个字符串的距离就＋１。最后要求距离和倒数最大，就代表距离最小。所以最小生成树搞　克鲁斯卡尔　＋　并查集合<br>
<br>
没有变态数据，不过数据量貌似很大啊<br><br>
<div style="border-left-color: rgb(204, 204, 204); padding-top: 4px; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&#160;1</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;2</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">math.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;3</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">algorithm</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;4</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&#160;max&#160;2001</span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;5</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&#160;std;<br></span><span style="color: #008080;">&#160;6</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;m,&#160;n,&#160;p[max];<br></span><span style="color: #008080;">&#160;7</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">char</span><span style="color: #000000;">&#160;input[max][</span><span style="color: #000000;">8</span><span style="color: #000000;">];<br></span><span style="color: #008080;">&#160;8</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&#160;E{<br></span><span style="color: #008080;">&#160;9</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;u,&#160;v,&#160;w;<br></span><span style="color: #008080;">10</span>&#160;<span style="color: #000000;">}e[</span><span style="color: #000000;">4000000</span><span style="color: #000000;">];<br></span><span style="color: #008080;">11</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;cmp(E&#160;a,&#160;E&#160;b){<br></span><span style="color: #008080;">12</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;a.w&#160;</span><span style="color: #000000;">></span><span style="color: #000000;">&#160;b.w;<br></span><span style="color: #008080;">13</span>&#160;<span style="color: #000000;">}<br></span><span style="color: #008080;">14</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;find(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;x){<br></span><span style="color: #008080;">15</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(x&#160;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&#160;p[x])</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;p[x]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;find(p[x]);<br></span><span style="color: #008080;">16</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;p[x];<br></span><span style="color: #008080;">17</span>&#160;<span style="color: #000000;">}<br></span><span style="color: #008080;">18</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;main(){<br></span><span style="color: #008080;">19</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;i,&#160;j,&#160;u,&#160;v,&#160;dis,&#160;k,&#160;c,&#160;tc,&#160;res;<br></span><span style="color: #008080;">20</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m),&#160;m){<br></span><span style="color: #008080;">21</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;c&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;res&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">22</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;max;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">23</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;p[i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;i;<br></span><span style="color: #008080;">24</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;m;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">25</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%s</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;input[i]);<br></span><span style="color: #008080;">26</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;m;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">27</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;i&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;j&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;m;&#160;j</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">28</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;dis&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">29</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&#160;j){<br></span><span style="color: #008080;">30</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(k&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;k&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">8</span><span style="color: #000000;">;&#160;k</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">31</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(input[i][k]&#160;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&#160;input[j][k])dis</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br></span><span style="color: #008080;">32</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(dis){<br></span><span style="color: #008080;">33</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;printf("%d&#160;->&#160;%d&#160;=&#160;%d\n",&#160;i,&#160;j,&#160;dis);</span><span style="color: #008000;"><br></span><span style="color: #008080;">34</span>&#160;<span style="color: #008000;"></span><span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[c].u&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;i;<br></span><span style="color: #008080;">35</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[c].v&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;j;<br></span><span style="color: #008080;">36</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[c</span><span style="color: #000000;">++</span><span style="color: #000000;">].w&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;dis;<br></span><span style="color: #008080;">37</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">38</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">39</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">40</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">41</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tc&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;c;<br></span><span style="color: #008080;">42</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;make_heap(e,&#160;e&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;c,&#160;cmp);<br></span><span style="color: #008080;">43</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">&#160;&#160;&#160;&#160;printf("%d&#160;%d&#160;%d\n",&#160;e[0].u,&#160;e[0].v,&#160;e[0].w);</span><span style="color: #008000;"><br></span><span style="color: #008080;">44</span>&#160;<span style="color: #008000;"></span><span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(n&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;n&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;m;&#160;tc</span><span style="color: #000000;">--</span><span style="color: #000000;">){<br></span><span style="color: #008080;">45</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">tc)</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br></span><span style="color: #008080;">46</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">((u&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;find(e[</span><span style="color: #000000;">0</span><span style="color: #000000;">].u))&#160;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&#160;(v&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;find(e[</span><span style="color: #000000;">0</span><span style="color: #000000;">].v))){<br></span><span style="color: #008080;">47</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;p[u]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;v;n</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br></span><span style="color: #008080;">48</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;res&#160;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&#160;e[</span><span style="color: #000000;">0</span><span style="color: #000000;">].w;<br></span><span style="color: #008080;">49</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">50</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">&#160;&#160;&#160;&#160;printf("%d&#160;%d&#160;%d\n",&#160;e[0].u,&#160;e[0].v,&#160;e[0].w);</span><span style="color: #008000;"><br></span><span style="color: #008080;">51</span>&#160;<span style="color: #008000;"></span><span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;pop_heap(e,&#160;e&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;tc,&#160;cmp);<br></span><span style="color: #008080;">52</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">53</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">The&#160;highest&#160;possible&#160;quality&#160;is&#160;</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">54</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(res)<br></span><span style="color: #008080;">55</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">1/%d.\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;res);<br></span><span style="color: #008080;">56</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&#160;puts(</span><span style="color: #000000;">"</span><span style="color: #000000;">0.</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">57</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">58</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">59</span>&#160;<span style="color: #000000;">}</span></div>
<br><img src ="http://www.cppblog.com/MemoryGarden/aggbug/60874.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2008-09-04 00:26 <a href="http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60874.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj 1125 Stockbroker Grapevine</title><link>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60873.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Wed, 03 Sep 2008 16:24:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60873.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/60873.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60873.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/60873.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/60873.html</trackback:ping><description><![CDATA[<br>
最短路径　ｆｌｏｙｄ<br>
<br>
<a href="http://acm.pku.edu.cn/JudgeOnline/problem?id=1125" target="_blank">http://acm.pku.edu.cn/JudgeOnline/problem?id=1125</a><br>
<br><br>
题目的意思比较难懂。。。我还是别人看明白了来问我，我才知道题意的，要不然我也看不明白，英语不好。
<br><br>就是股票经纪人，ｕ，　ｖ　　两个点，　然后意思是传播谣言需要的时间，所以是每对点的最短路径。<br><br>从中选出最快完成的，也就是求出图中每个点到图中其余点的最短路径的最大值，取最小<br>
<br><br><br>
<div style="padding: 4px 5px 4px 4px; border-left-color: #cccccc; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;max&nbsp;102</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(){<br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,&nbsp;j,&nbsp;t,&nbsp;u,&nbsp;v,&nbsp;w,&nbsp;k,&nbsp;m,&nbsp;n,&nbsp;D[max][max],&nbsp;v2,&nbsp;p,&nbsp;ok;<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m),&nbsp;m){<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;max;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;j&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;max;&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D[i][j]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;max;<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(u&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;u&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;m;&nbsp;u</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">t);<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;t;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">v,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">w);<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D[u][v]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;w;<br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(k&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;k&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;m;&nbsp;k</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;m;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;j&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;m;&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(D[i][k]&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;D[k][j]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;D[i][j]&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;j)<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D[i][j]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;D[i][k]&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;D[k][j];<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;max;<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;m;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;j&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;m;&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;j&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;D[i][j]&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;v)v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;D[i][j];<br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(v&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;max){<br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(v&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;v2){<br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;v;<br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;i;<br></span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d&nbsp;%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;p,&nbsp;v2);<br></span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">}</span></div>
<br> <img src ="http://www.cppblog.com/MemoryGarden/aggbug/60873.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2008-09-04 00:24 <a href="http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60873.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj 2240 Arbitrage</title><link>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60872.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Wed, 03 Sep 2008 16:22:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60872.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/60872.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60872.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/60872.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/60872.html</trackback:ping><description><![CDATA[
<div style="border-left-color: rgb(204, 204, 204); padding-top: 4px; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;"><br></span><img src="http://img.baidu.com/hi/jd/j_0015.gif">过的诡异。。。。。<br>
<br>
貌似听aowarmen 讲是要判断正环，但是。。。我加了一个点，用最长路做的。。。汗。。。。<br>
<br>
而且重边判断的不行， re 了n次。。。。。<br>
<br>
<img src="http://img.baidu.com/hi/jd/j_0025.gif">水过。。。。。<br>
<a href="http://acm.pku.edu.cn/JudgeOnline/problem?id=2240" target="_blank"><br>
http://acm.pku.edu.cn/JudgeOnline/problem?id=2240</a><br>
<br>
<br>
后来改的，仍然判不了重边。。。<br><span style="color: #008080;"><br><br>&#160;1</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;2</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;3</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;4</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">map</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;5</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&#160;eps&#160;1e-30</span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;6</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&#160;max&#160;1000</span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;7</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&#160;std;<br></span><span style="color: #008080;">&#160;8</span>&#160;<span style="color: #000000;">map</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">,&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">></span><span style="color: #000000;">&#160;mp;<br></span><span style="color: #008080;">&#160;9</span>&#160;<span style="color: #000000;">map</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">,&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">></span><span style="color: #000000;">&#160;::&#160;iterator&#160;it;<br></span><span style="color: #008080;">10</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;m,&#160;n,&#160;el;<br></span><span style="color: #008080;">11</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#160;mm[max][max];<br></span><span style="color: #008080;">12</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&#160;E{<br></span><span style="color: #008080;">13</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;u,&#160;v;<br></span><span style="color: #008080;">14</span>&#160;<span style="color: #000000;">};<br></span><span style="color: #008080;">15</span>&#160;<span style="color: #000000;">E&#160;e[</span><span style="color: #000000;">1000000</span><span style="color: #000000;">];<br></span><span style="color: #008080;">16</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#160;bellman(){<br></span><span style="color: #008080;">17</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;i,&#160;j,&#160;f;<br></span><span style="color: #008080;">18</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#160;d[max];<br></span><span style="color: #008080;">19</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;max;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)d[i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">20</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;d[</span><span style="color: #000000;">0</span><span style="color: #000000;">]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">21</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;m;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">22</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;f&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">23</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;j&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;el;&#160;j</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">24</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(d[e[j].v]&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;d[e[j].u]&#160;</span><span style="color: #000000;">*</span><span style="color: #000000;">&#160;mm[e[j].u][e[j].v]&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;eps){<br></span><span style="color: #008080;">25</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;d[e[j].v]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;d[e[j].u]&#160;</span><span style="color: #000000;">*</span><span style="color: #000000;">&#160;mm[e[j].u][e[j].v];<br></span><span style="color: #008080;">26</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;f&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">27</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">28</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">29</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">f)</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;d[n]&#160;</span><span style="color: #000000;">></span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1.0</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;eps;<br></span><span style="color: #008080;">30</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">31</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;d[n]&#160;</span><span style="color: #000000;">></span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1.0</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;eps;<br></span><span style="color: #008080;">32</span>&#160;<span style="color: #000000;">}<br></span><span style="color: #008080;">33</span>&#160;<span style="color: #000000;"><br></span><span style="color: #008080;">34</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;main()<br></span><span style="color: #008080;">35</span>&#160;<span style="color: #000000;">{<br></span><span style="color: #008080;">36</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&#160;input[</span><span style="color: #000000;">1000</span><span style="color: #000000;">],&#160;u[</span><span style="color: #000000;">1000</span><span style="color: #000000;">],&#160;v[</span><span style="color: #000000;">1000</span><span style="color: #000000;">];<br></span><span style="color: #008080;">37</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;i,&#160;j,&#160;l,&#160;a,&#160;b,&#160;c&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">38</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#160;w;<br></span><span style="color: #008080;">39</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m),&#160;m){<br></span><span style="color: #008080;">40</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;l&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;el&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">41</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">Case&#160;%d:&#160;</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;c</span><span style="color: #000000;">++</span><span style="color: #000000;">);<br></span><span style="color: #008080;">42</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;memset(mm,&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&#160;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(mm));<br></span><span style="color: #008080;">43</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;m;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">44</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%s</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;input);<br></span><span style="color: #008080;">45</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;mp.insert(make_pair(input,&#160;l</span><span style="color: #000000;">++</span><span style="color: #000000;">));<br></span><span style="color: #008080;">46</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">47</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n);<br></span><span style="color: #008080;">48</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;n;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">49</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%s%lf%s</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;u,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">w,&#160;v);<br></span><span style="color: #008080;">50</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;a&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;mp.find(u)</span><span style="color: #000000;">-></span><span style="color: #000000;">second;<br></span><span style="color: #008080;">51</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;b&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;mp.find(v)</span><span style="color: #000000;">-></span><span style="color: #000000;">second;<br></span><span style="color: #008080;">52</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[el].u&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;a;<br></span><span style="color: #008080;">53</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(b&#160;</span><span style="color: #000000;">==</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">)b&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;n;<br></span><span style="color: #008080;">54</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">mm[a][b]&#160;</span><span style="color: #000000;">||</span><span style="color: #000000;">&#160;mm[a][b]&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;w&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;eps){<br></span><span style="color: #008080;">55</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;mm[a][b]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;w;<br></span><span style="color: #008080;">56</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[el</span><span style="color: #000000;">++</span><span style="color: #000000;">].v&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;b;<br></span><span style="color: #008080;">57</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">58</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">59</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(bellman())<br></span><span style="color: #008080;">60</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">Yes\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">61</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&#160;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">No\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">62</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;mp.clear();<br></span><span style="color: #008080;">63</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">64</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">65</span>&#160;<span style="color: #000000;">}</span></div>
<br><img src ="http://www.cppblog.com/MemoryGarden/aggbug/60872.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2008-09-04 00:22 <a href="http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60872.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj 3259 Wormholes </title><link>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60869.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Wed, 03 Sep 2008 16:03:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60869.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/60869.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60869.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/60869.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/60869.html</trackback:ping><description><![CDATA[
<pre><div style="padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; width: 98%;"><span style="color: #858585; font-family: Arial; line-height: 20px; white-space: normal;"><img src="http://img.baidu.com/hi/jd/j_0024.gif" style="line-height: normal;">让我读了好长好长时间题。。。。。<br style="line-height: normal;"><br style="line-height: normal;"><a href="http://acm.pku.edu.cn/JudgeOnline/problem?id=3259" target="_blank" style="color: #858585; line-height: normal;">http://acm.pku.edu.cn/JudgeOnline/problem?id=3259</a></span><br></div>
<div style="padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; width: 98%;"><span style="color: #858585; font-family: Arial; line-height: 20px; white-space: normal;">不过 一次就过啦，真开心<img src="http://img.baidu.com/hi/jd/j_0017.gif" style="line-height: normal;"><br style="line-height: normal;"><br style="line-height: normal;">题意 ： 一个famer有一些农场，这些农场里面有一些田地，田地里面有一些虫洞，田地和田地之间有路，虫洞有这样的性质： 时间倒流。<br style="line-height: normal;"><br style="line-height: normal;">问你这个农民能不能看到他自己，也就是说，有没有这样一条路径，能利用虫洞的时间倒流的性质，让这个人能在这个点出发前回去，这样他就是能看到他自己了。。。。。瀑布汗。。。。<img src="http://img.baidu.com/hi/ldw/w_0002.gif" style="line-height: normal;"><br style="line-height: normal;"><br style="line-height: normal;">输入 ：<br style="line-height: normal;"><br style="line-height: normal;"><br style="line-height: normal;">
<pre class="sio" style="line-height: normal;">2       //农场个数   (text cases)<br style="line-height: normal;">3 3 1  //田地   路径  虫洞   他们的个数<br style="line-height: normal;">1 2 2   //田地路径 u， v， 以及经过需要的时间<br style="line-height: normal;">1 3 4<br style="line-height: normal;">2 3 1<br style="line-height: normal;">3 1 3   //虫洞路径  u， v， 以及倒流的时间<br style="line-height: normal;">3 2 1<br style="line-height: normal;">1 2 3<br style="line-height: normal;">2 3 4<br style="line-height: normal;">3 1 8<br style="line-height: normal;"><br style="line-height: normal;"><br style="line-height: normal;">想法： 首先建有向图，双向的路径也可以表示，然后倒流的时间设置为负权值。这样，就判断这个图里面有没有负回路就可以了<br style="line-height: normal;">       因为负回路就可以满足条件，代表总共的需要的时间是负的，也就是时间倒流了。<br style="line-height: normal;"><br style="line-height: normal;">一次bellman。</pre>
</span></div>
<div style="padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; width: 98%;"><br></div>
<div style="padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; width: 98%;"><img src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" id="Code_Closed_Image_224004" onclick="this.style.display='none'; code_closed_text_224004.style.display=" none="" ;="" code_open_image_224004.style.display="'inline';" code_open_text_224004.style.display="'inline';" style="display: none;" align="top" width="11" height="16"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Code_Open_Image_224004" style="display: inline;" onclick="this.style.display='none'; code_open_text_224004.style.display=" none="" ;="" code_closed_image_224004.style.display="'inline';" code_closed_text_224004.style.display="'inline';" align="top" width="11" height="16"><span id="Code_Closed_Text_224004" style="border: 1px solid #808080; background-color: #ffffff; display: none;">Soure Code</span><span id="Code_Open_Text_224004" style="display: inline;"><br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&#160;1</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;2</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;3</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&#160;max&#160;10001</span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;4</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&#160;point&#160;501</span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;5</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&#160;std;<br></span><span style="color: #008080;">&#160;6</span>&#160;<span style="color: #000000;"><br></span><span style="color: #008080;">&#160;7</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&#160;E{<br></span><span style="color: #008080;">&#160;8</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;u,&#160;v,&#160;w;<br></span><span style="color: #008080;">&#160;9</span>&#160;<span style="color: #000000;">}e[</span><span style="color: #000000;">25000</span><span style="color: #000000;">];<br></span><span style="color: #008080;">10</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;el,&#160;n,&#160;d[</span><span style="color: #000000;">501</span><span style="color: #000000;">];<br></span><span style="color: #008080;">11</span>&#160;<span style="color: #000000;"><br></span><span style="color: #008080;">12</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&#160;bellman(){<br></span><span style="color: #008080;">13</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;i,&#160;j,&#160;f&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">14</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;n&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">15</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;f&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">16</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;j&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;el;&#160;j</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">17</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(d[e[j].v]&#160;</span><span style="color: #000000;">></span><span style="color: #000000;">&#160;d[e[j].u]&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;e[j].w){<br></span><span style="color: #008080;">18</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;d[e[j].v]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;d[e[j].u]&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;e[j].w;<br></span><span style="color: #008080;">19</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;f&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">20</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">21</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">22</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">f){<br></span><span style="color: #008080;">23</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;puts(</span><span style="color: #000000;">"</span><span style="color: #000000;">NO</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">24</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br></span><span style="color: #008080;">25</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">26</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">27</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;el;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">28</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(d[e[i].v]&#160;</span><span style="color: #000000;">></span><span style="color: #000000;">&#160;d[e[i].u]&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;e[i].w){<br></span><span style="color: #008080;">29</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;puts(</span><span style="color: #000000;">"</span><span style="color: #000000;">YES</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">30</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br></span><span style="color: #008080;">31</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">32</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">33</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;puts(</span><span style="color: #000000;">"</span><span style="color: #000000;">NO</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">34</span>&#160;<span style="color: #000000;">}<br></span><span style="color: #008080;">35</span>&#160;<span style="color: #000000;"><br></span><span style="color: #008080;">36</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;main(){<br></span><span style="color: #008080;">37</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;i,&#160;j,&#160;m,&#160;w,&#160;u,&#160;v,&#160;W,&#160;F;<br></span><span style="color: #008080;">38</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">F);<br></span><span style="color: #008080;">39</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(F</span><span style="color: #000000;">--</span><span style="color: #000000;">){<br></span><span style="color: #008080;">40</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;el&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">41</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">w);<br></span><span style="color: #008080;">42</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;m;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">43</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">u,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">v,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">W);<br></span><span style="color: #008080;">44</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[el].u&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;u;<br></span><span style="color: #008080;">45</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[el].v&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;v;<br></span><span style="color: #008080;">46</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[el</span><span style="color: #000000;">++</span><span style="color: #000000;">].w&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;W;<br></span><span style="color: #008080;">47</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[el].u&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;v;<br></span><span style="color: #008080;">48</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[el].v&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;u;<br></span><span style="color: #008080;">49</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[el</span><span style="color: #000000;">++</span><span style="color: #000000;">].w&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;W;<br></span><span style="color: #008080;">50</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">51</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;w;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">52</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">u,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">v,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">W);<br></span><span style="color: #008080;">53</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[el].u&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;u;<br></span><span style="color: #008080;">54</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[el].v&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;v;<br></span><span style="color: #008080;">55</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e[el</span><span style="color: #000000;">++</span><span style="color: #000000;">].w&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">W;<br></span><span style="color: #008080;">56</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">57</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;bellman();<br></span><span style="color: #008080;">58</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">59</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">60</span>&#160;<span style="color: #000000;">}<br></span><span style="color: #008080;">61</span>&#160;<span style="color: #000000;"><br></span><span style="color: #008080;">62</span>&#160;<span style="color: #000000;"></span></span></div>
<div style="padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; width: 98%;"><br></div>
</pre><img src ="http://www.cppblog.com/MemoryGarden/aggbug/60869.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2008-09-04 00:03 <a href="http://www.cppblog.com/MemoryGarden/archive/2008/09/04/60869.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>pku 1062 昂贵的聘礼</title><link>http://www.cppblog.com/MemoryGarden/archive/2008/09/03/60867.html</link><dc:creator>memorygarden</dc:creator><author>memorygarden</author><pubDate>Wed, 03 Sep 2008 15:57:00 GMT</pubDate><guid>http://www.cppblog.com/MemoryGarden/archive/2008/09/03/60867.html</guid><wfw:comment>http://www.cppblog.com/MemoryGarden/comments/60867.html</wfw:comment><comments>http://www.cppblog.com/MemoryGarden/archive/2008/09/03/60867.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MemoryGarden/comments/commentRss/60867.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MemoryGarden/services/trackbacks/60867.html</trackback:ping><description><![CDATA[
<span  style="border-collapse: separate; color: #858585; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><br><a style="color: #ff0000;" title="http://acm.pku.edu.cn/JudgeOnline/problem?id=1062" href="http://acm.pku.edu.cn/JudgeOnline/problem?id=1062">http://acm.pku.edu.cn/JudgeOnline/problem?id=1062</a><br><br>题意 ：中文的。。。。<br style="line-height: normal;"><br style="line-height: normal;">想法 ：将冒险者看成地n + 1 个点， 进行构图，用dj 最短路解决<br style="line-height: normal;"><br style="line-height: normal;">一个物品的价钱就是n + 1 个点 与这个物品的边，而可以代替并便宜的物品的便宜价格是代替品到这个物品的距离，这样构图完毕。<br style="line-height: normal;"><br style="line-height: normal;">等级限制自己没有想出来，看了一些报告，最后枚举可能性，也就是说，最后要和酋长交易，那么，等级的差别就可以围绕酋长的等级来算，也就是说，如果酋长的等级是3， 等级限制是2， 那么，这次交易要想成功，可能的等级是 1 2 3 ， 2 3 4， 3 4 5 在应用dj 的时候，把等级不符合要求的点在图中去掉，也就是说，可以把它们先划分到已知的集合 s[i]里面去，这样，再进行路径扩展的时候，就不会加到这个点了。<br style="line-height: normal;"><br style="line-height: normal;">所以，枚举可能性，重新构图，得到dj最短路的最小值， 便是结果<br><br>
<div style="border-left-color: rgb(204, 204, 204); padding-top: 4px; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&#160;1</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;2</span>&#160;<span style="color: #000000;">#include&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;3</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&#160;max&#160;102</span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;4</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&#160;MAX&#160;999999999</span><span style="color: #000000;"><br></span><span style="color: #008080;">&#160;5</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&#160;std;<br></span><span style="color: #008080;">&#160;6</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;lv,&#160;n,&#160;map[max][max],&#160;tmap[max][max],&#160;rank[max],&#160;trank[max],&#160;ok[max],&#160;s[max],&#160;d[max];<br></span><span style="color: #008080;">&#160;7</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;dj(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;x){<br></span><span style="color: #008080;">&#160;8</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;i,&#160;j,&#160;w,&#160;min;<br></span><span style="color: #008080;">&#160;9</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;memset(s,&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&#160;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(s));<br></span><span style="color: #008080;">10</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;memset(d,&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">,&#160;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(d));<br></span><span style="color: #008080;">11</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;n&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">12</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(map[x][i])d[i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;map[x][i];<br></span><span style="color: #008080;">13</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">ok[rank[i]]){<br></span><span style="color: #008080;">14</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;s[i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">15</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;d[i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;MAX;<br></span><span style="color: #008080;">16</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">17</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">18</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br></span><span style="color: #008080;">19</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;w&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">20</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;n&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">21</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">s[i]&#160;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&#160;d[i]&#160;</span><span style="color: #000000;">>=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">){<br></span><span style="color: #008080;">22</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(w&#160;</span><span style="color: #000000;">==</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">||</span><span style="color: #000000;">&#160;d[i]&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;min){<br></span><span style="color: #008080;">23</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;min&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;d[i];<br></span><span style="color: #008080;">24</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;w&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;i;<br></span><span style="color: #008080;">25</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">26</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">27</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">28</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(w&#160;</span><span style="color: #000000;">==</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">)</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br></span><span style="color: #008080;">29</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;s[w]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">30</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;n&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">31</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(map[w][i]){<br></span><span style="color: #008080;">32</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(d[i]&#160;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">||</span><span style="color: #000000;">&#160;d[i]&#160;</span><span style="color: #000000;">></span><span style="color: #000000;">&#160;d[w]&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;map[w][i])<br></span><span style="color: #008080;">33</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;d[i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;map[w][i]&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;d[w];<br></span><span style="color: #008080;">34</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">35</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">36</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">37</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;d[</span><span style="color: #000000;">1</span><span style="color: #000000;">];<br></span><span style="color: #008080;">38</span>&#160;<span style="color: #000000;">}<br></span><span style="color: #008080;">39</span>&#160;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;main(){<br></span><span style="color: #008080;">40</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&#160;i,&#160;j,&#160;u,&#160;v,&#160;w,&#160;res,&#160;cost,&#160;nlv,&#160;t,&#160;l,&#160;r,&#160;xx;<br></span><span style="color: #008080;">41</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">lv,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n)&#160;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br></span><span style="color: #008080;">42</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;res&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;MAX;<br></span><span style="color: #008080;">43</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;memset(map,&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&#160;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(map));<br></span><span style="color: #008080;">44</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;memset(tmap,&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&#160;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(tmap));<br></span><span style="color: #008080;">45</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;i&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;n;&#160;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">46</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">cost,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">nlv,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">t);<br></span><span style="color: #008080;">47</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tmap[n&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">][i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;map[n&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">][i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;cost;<br></span><span style="color: #008080;">48</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;rank[i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;trank[i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;nlv;<br></span><span style="color: #008080;">49</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;j&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;t;&#160;j</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">50</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">u,&#160;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">cost);<br></span><span style="color: #008080;">51</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;map[u][i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;tmap[u][i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;cost;<br></span><span style="color: #008080;">52</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">53</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">54</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trank[n&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;rank[n&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;trank[</span><span style="color: #000000;">1</span><span style="color: #000000;">]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;rank[</span><span style="color: #000000;">1</span><span style="color: #000000;">];<br></span><span style="color: #008080;">55</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(l&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;lv,&#160;r&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;l&#160;</span><span style="color: #000000;">>=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;l</span><span style="color: #000000;">--</span><span style="color: #000000;">,&#160;r</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">56</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;xx&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">57</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;memset(ok,&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&#160;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(ok));<br></span><span style="color: #008080;">58</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;l;&#160;i&#160;</span><span style="color: #000000;">></span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&#160;i</span><span style="color: #000000;">--</span><span style="color: #000000;">){<br></span><span style="color: #008080;">59</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(rank[</span><span style="color: #000000;">1</span><span style="color: #000000;">]&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">&#160;i&#160;</span><span style="color: #000000;">>=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br></span><span style="color: #008080;">60</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ok[rank[</span><span style="color: #000000;">1</span><span style="color: #000000;">]&#160;</span><span style="color: #000000;">-</span><span style="color: #000000;">&#160;i]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">61</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">62</span>&#160;<span style="color: #000000;"><br></span><span style="color: #008080;">63</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ok[rank[</span><span style="color: #000000;">1</span><span style="color: #000000;">]]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">64</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(j&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&#160;j&#160;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&#160;r;&#160;j</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">65</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ok[rank[</span><span style="color: #000000;">1</span><span style="color: #000000;">]&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;j]&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">66</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">67</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(res&#160;</span><span style="color: #000000;">></span><span style="color: #000000;">&#160;(w&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;dj(n&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">1</span><span style="color: #000000;">)))<br></span><span style="color: #008080;">68</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;res&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;w;<br></span><span style="color: #008080;">69</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">70</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;res);<br></span><span style="color: #008080;">71</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;}<br></span><span style="color: #008080;">72</span>&#160;<span style="color: #000000;">&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">73</span>&#160;<span style="color: #000000;">}</span></div>
<br style="line-height: normal;"></span>   <img src ="http://www.cppblog.com/MemoryGarden/aggbug/60867.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MemoryGarden/" target="_blank">memorygarden</a> 2008-09-03 23:57 <a href="http://www.cppblog.com/MemoryGarden/archive/2008/09/03/60867.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>