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

<channel>
	<title>Beyond the Void &#187; USACO</title>
	<atom:link href="http://www.byvoid.com/blog/tag/usaco/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.byvoid.com/blog</link>
	<description></description>
	<lastBuildDate>Tue, 29 Jun 2010 08:44:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>pku 3255 Roadblocks</title>
		<link>http://www.byvoid.com/blog/pku-3255/</link>
		<comments>http://www.byvoid.com/blog/pku-3255/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 06:51:49 +0000</pubDate>
		<dc:creator>BYVoid</dc:creator>
				<category><![CDATA[Pku]]></category>
		<category><![CDATA[USACO]]></category>
		<category><![CDATA[pku]]></category>
		<category><![CDATA[最短路径]]></category>
		<category><![CDATA[次短路径]]></category>

		<guid isPermaLink="false">http://www.byvoid.com/blog/?p=1216</guid>
		<description><![CDATA[这道题不同于一般的次短路径问题，因为允许边重走。看似更为复杂了，其实是更简单了一些。方法为先用Heap+Dijkstra求出1和N的单源最短路径，把无向边看成两个有向边，然后枚举每单向条边(u... ]]></description>
			<content:encoded><![CDATA[<p>这道题不同于一般的次短路径问题，因为允许边重走。看似更为复杂了，其实是更简单了一些。方法为先用Heap+Dijkstra求出1和N的单源最短路径，把无向边看成两个有向边，然后枚举每单向条边(u,v)，计算Dist=dis(1,u) + dis(N,v)，看看此时Dist的值是否大于dis(1,N)，如果是的话用它更新次短路径，保留一个最小的值。</p>
<p>USACO 2006 November Gold</p>
<p><span id="more-1216"></span></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1216code2'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p12162"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
</pre></td><td class="code" id="p1216code2"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: pku3255 Roadblocks
 * Author: Guo Jiabao
 * Time: 2009.4.14 10:32
 * State: Solved
 * Memo: 次短路径 Dijkstra + Heap (特殊)
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAXN<span style="color: #000080;">=</span><span style="color: #0000dd;">5001</span>,MAXM<span style="color: #000080;">=</span><span style="color: #0000dd;">200001</span>,INF<span style="color: #000080;">=</span><span style="color: #208080;">0x7FFFFFF</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> Minheap
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">struct</span> HeapElement
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">int</span> key,value<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>H<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> size,Position<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">void</span> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>H<span style="color: #008000;">&#91;</span>size<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">value</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span>INF<span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">void</span> shift<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> key,<span style="color: #0000ff;">int</span> value,<span style="color: #0000ff;">int</span> pos<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">int</span> i,f<span style="color: #008080;">;</span>
		HeapElement p<span style="color: #000080;">=</span><span style="color: #008000;">&#123;</span>key,value<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>pos<span style="color: #008080;">;</span>p.<span style="color: #007788;">value</span> <span style="color: #000080;">&lt;</span> H<span style="color: #008000;">&#91;</span>f<span style="color: #000080;">=</span>i<span style="color: #000080;">&gt;&gt;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">value</span><span style="color: #008080;">;</span>i<span style="color: #000080;">=</span>f<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			H<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>H<span style="color: #008000;">&#91;</span>f<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			Position<span style="color: #008000;">&#91;</span>H<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">key</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		H<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>p<span style="color: #008080;">;</span>
		Position<span style="color: #008000;">&#91;</span>H<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">key</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">void</span> ins<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> key,<span style="color: #0000ff;">int</span> value<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>shift<span style="color: #008000;">&#40;</span>key,value,<span style="color: #000040;">++</span>size<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">void</span> decrease<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> key,<span style="color: #0000ff;">int</span> value<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>shift<span style="color: #008000;">&#40;</span>key,value,Position<span style="color: #008000;">&#91;</span>key<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">void</span> delmin<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">int</span> i,c<span style="color: #008080;">;</span>
		HeapElement p<span style="color: #000080;">=</span>H<span style="color: #008000;">&#91;</span>size<span style="color: #000040;">--</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><span style="color: #008000;">&#40;</span>c<span style="color: #000080;">=</span>i<span style="color: #000080;">&lt;&lt;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #000080;">&lt;=</span>size<span style="color: #008080;">;</span>i<span style="color: #000080;">=</span>c<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span> <span style="color: #000080;">&lt;=</span>size <span style="color: #000040;">&amp;&amp;</span> H<span style="color: #008000;">&#91;</span>c<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">value</span> <span style="color: #000080;">&lt;</span> H<span style="color: #008000;">&#91;</span>c<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">value</span><span style="color: #008000;">&#41;</span>
				c<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>H<span style="color: #008000;">&#91;</span>c<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">value</span> <span style="color: #000080;">&lt;</span> p.<span style="color: #007788;">value</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				H<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>H<span style="color: #008000;">&#91;</span>c<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
				Position<span style="color: #008000;">&#91;</span>H<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">key</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
			<span style="color: #0000ff;">else</span>
				<span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		H<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>p<span style="color: #008080;">;</span>
		Position<span style="color: #008000;">&#91;</span>H<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">key</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>H<span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> edge
<span style="color: #008000;">&#123;</span>
	edge <span style="color: #000040;">*</span>next<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> t,c<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>ES<span style="color: #008000;">&#91;</span>MAXM<span style="color: #008000;">&#93;</span>,<span style="color: #000040;">*</span>V<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> N,M,EC<span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>,Shortest,Ans<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> sp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">void</span> addedge<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> a,<span style="color: #0000ff;">int</span> b,<span style="color: #0000ff;">int</span> c<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	ES<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>EC<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">next</span><span style="color: #000080;">=</span>V<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	V<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>ES<span style="color: #000040;">+</span>EC<span style="color: #008080;">;</span> V<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>t<span style="color: #000080;">=</span>b<span style="color: #008080;">;</span> V<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c<span style="color: #000080;">=</span>c<span style="color: #008080;">;</span>
	ES<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>EC<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">next</span><span style="color: #000080;">=</span>V<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	V<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>ES<span style="color: #000040;">+</span>EC<span style="color: #008080;">;</span> V<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>t<span style="color: #000080;">=</span>a<span style="color: #008080;">;</span> V<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c<span style="color: #000080;">=</span>c<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,a,b,c<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;block.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;block.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>N,<span style="color: #000040;">&amp;</span>M<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>a,<span style="color: #000040;">&amp;</span>b,<span style="color: #000040;">&amp;</span>c<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		addedge<span style="color: #008000;">&#40;</span>a,b,c<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> dijkstra<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> S,<span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>sp<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j<span style="color: #008080;">;</span>
	H.<span style="color: #007788;">init</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		H.<span style="color: #007788;">ins</span><span style="color: #008000;">&#40;</span>i,sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>INF<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	H.<span style="color: #007788;">decrease</span><span style="color: #008000;">&#40;</span>S,sp<span style="color: #008000;">&#91;</span>S<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>S<span style="color: #008080;">;;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		H.<span style="color: #007788;">delmin</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>edge <span style="color: #000040;">*</span>e<span style="color: #000080;">=</span>V<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>e<span style="color: #008080;">;</span>e<span style="color: #000080;">=</span>e<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>next<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			j<span style="color: #000080;">=</span>e<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>t<span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> e<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c <span style="color: #000080;">&lt;</span>sp<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
				H.<span style="color: #007788;">decrease</span><span style="color: #008000;">&#40;</span>j,sp<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> e<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>H.<span style="color: #007788;">size</span><span style="color: #008000;">&#41;</span>
			i<span style="color: #000080;">=</span>H.<span style="color: #007788;">H</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">key</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span>
			<span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> solve<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,c<span style="color: #008080;">;</span>
	dijkstra<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span>,sp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	dijkstra<span style="color: #008000;">&#40;</span>N,sp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	Shortest<span style="color: #000080;">=</span>sp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	Ans<span style="color: #000080;">=</span>INF<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>EC<span style="color: #008080;">;</span>i<span style="color: #000040;">+</span><span style="color: #000080;">=</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		edge <span style="color: #000040;">*</span>e1<span style="color: #000080;">=</span>ES<span style="color: #000040;">+</span>i,<span style="color: #000040;">*</span>e2<span style="color: #000080;">=</span>ES<span style="color: #000040;">+</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">int</span> a<span style="color: #000080;">=</span>e1<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>t,b<span style="color: #000080;">=</span>e2<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>t<span style="color: #008080;">;</span>
		c<span style="color: #000080;">=</span>sp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> sp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> e1<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c <span style="color: #000080;">&lt;</span> Ans <span style="color: #000040;">&amp;&amp;</span> c<span style="color: #000080;">&gt;</span>Shortest<span style="color: #008000;">&#41;</span>
			Ans<span style="color: #000080;">=</span>c<span style="color: #008080;">;</span>
		c<span style="color: #000080;">=</span>sp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> sp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> e1<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c <span style="color: #000080;">&lt;</span> Ans <span style="color: #000040;">&amp;&amp;</span> c<span style="color: #000080;">&gt;</span>Shortest<span style="color: #008000;">&#41;</span>
			Ans<span style="color: #000080;">=</span>c<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	solve<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,Ans<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<h3  class="related_post_title">Maybe you like</h3><ul class="related_post"><li><a href="http://www.byvoid.com/blog/haoi-2005-route/" title="HAOI 2005 路由选择问题">HAOI 2005 路由选择问题</a></li><li><a href="http://www.byvoid.com/blog/usaco-jan08-silver-telephone-lines/" title="USACO JAN08 Silver Telephone Lines 架设电话线">USACO JAN08 Silver Telephone Lines 架设电话线</a></li><li><a href="http://www.byvoid.com/blog/usaco-243-cow-tours/" title="USACO 2.4.3 Cow Tours 牛的旅行">USACO 2.4.3 Cow Tours 牛的旅行</a></li><li><a href="http://www.byvoid.com/blog/noi-2007-network/" title="NOI 2007 社交网络">NOI 2007 社交网络</a></li><li><a href="http://www.byvoid.com/blog/ahoi-route/" title="AHOI 上学路线">AHOI 上学路线</a></li><li><a href="http://www.byvoid.com/blog/ahoi2005-cross/" title="AHOI2005 穿越磁场">AHOI2005 穿越磁场</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.byvoid.com/blog/pku-3255/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>我叫 Grover Morgan</title>
		<link>http://www.byvoid.com/blog/grover-morgan/</link>
		<comments>http://www.byvoid.com/blog/grover-morgan/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 13:37:55 +0000</pubDate>
		<dc:creator>BYVoid</dc:creator>
				<category><![CDATA[生活點滴]]></category>
		<category><![CDATA[Grover]]></category>
		<category><![CDATA[Morgan]]></category>
		<category><![CDATA[USACO]]></category>
		<category><![CDATA[信]]></category>
		<category><![CDATA[名字]]></category>
		<category><![CDATA[月赛]]></category>

		<guid isPermaLink="false">http://www.byvoid.com/blog/?p=402</guid>
		<description><![CDATA[做USACO月赛遇到一件巨囧的事。今天中午受到Rob的信 Dear CmYkRgB123 CmYkRgB123 [ID: cmykrgb1]: Your recent entry (as cmykrgb1) to the USACO programming contest has been rejected because the name that you used to register: CmYkRgB123 CmYk... ]]></description>
			<content:encoded><![CDATA[<p>做USACO月赛遇到一件巨囧的事。今天中午受到Rob的信</p>
<blockquote><p>
Dear CmYkRgB123 CmYkRgB123 [ID: cmykrgb1]:</p>
<p>Your recent entry (as cmykrgb1) to the USACO programming contest has<br />
been rejected because the name that you used to register:</p>
<p>     CmYkRgB123 CmYkRgB123</p>
<p>was deemed to be incomplete, inaccurate, inflammatory, wrong,<br />
misleading, suspicious, or confusing &#8212; or it doesn&#8217;t contain latin<br />
characters like A-Za-z.<br />
&#8230;&#8230;
</p></blockquote>
<p>名字不符合规则，&#8221;它被认为是不完整，不准确的，有煽动性的，错误的，有误导性的，可疑的，混淆的&#8221;(汗&#8230;..)<br />
没想到CmYkRgB123这个名字这么强悍。<br />
<span id="more-402"></span><br />
然后我给Rob回信，内容如下</p>
<blockquote><p>
Dear Rob</p>
<p>I am a Chinese user. My ID cmykrgb1 contains CmYkRgB123 CmYkRgB123 because I don&#8217;t have a English name.This name is from my Chinese name. This is my only ID and I had taken part in the contest by the rules . I was not cheating.</p>
<p>If the name doesn&#8217;t match the rules , I &#8216;ll change it at once.</p>
<p>Sincerely cmykrgb123
</p></blockquote>
<p>没想到他很快就回信了(我还以为他在睡觉)</p>
<blockquote>
<p>Why not create a nice english name for yourself?</p>
<p>May I suggest Grover Morgan?</p>
<p>RK</p></blockquote>
<p>Grover Morgan，汗，他还给我起了名字。不过这名字似乎也不错，就叫我Grover Morgan把，呵呵。</p>
<blockquote><p>
Thank you for creating a nice name for me. Since I could&#8217;n come up with a name ,I think you can call me Grover Morgan.</p>
<p>And could you please unlock my ID cmykrgb1 ?
</p></blockquote>
<h3  class="related_post_title">Maybe you like</h3><ul class="related_post"><li><a href="http://www.byvoid.com/blog/pku-3255/" title="pku 3255 Roadblocks">pku 3255 Roadblocks</a></li><li><a href="http://www.byvoid.com/blog/usaco-feb07-silver-silver-lilypad-pond/" title="USACO FEB07 Silver Silver Lilypad Pond  银色莲花池">USACO FEB07 Silver Silver Lilypad Pond  银色莲花池</a></li><li><a href="http://www.byvoid.com/blog/usaco-feb07-bronze-bronze-lilypad-pond/" title="USACO FEB07 Bronze Bronze Lilypad Pond 青铜莲花池">USACO FEB07 Bronze Bronze Lilypad Pond 青铜莲花池</a></li><li><a href="http://www.byvoid.com/blog/usaco-mar07-silver-monthly-expense/" title="USACO MAR07 Silver Monthly Expense 月度花费">USACO MAR07 Silver Monthly Expense 月度花费</a></li><li><a href="http://www.byvoid.com/blog/usaco-mar07-silver-balanced-lineup/" title="USACO MAR07 Silver Balanced Lineup 平衡的阵容">USACO MAR07 Silver Balanced Lineup 平衡的阵容</a></li><li><a href="http://www.byvoid.com/blog/usaco-mar07-silver-cow-traffic/" title="USACO MAR07 Silver Cow Traffic 奶牛交通">USACO MAR07 Silver Cow Traffic 奶牛交通</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.byvoid.com/blog/grover-morgan/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>USACO FEB07 Silver Silver Lilypad Pond  银色莲花池</title>
		<link>http://www.byvoid.com/blog/usaco-feb07-silver-silver-lilypad-pond/</link>
		<comments>http://www.byvoid.com/blog/usaco-feb07-silver-silver-lilypad-pond/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 14:23:18 +0000</pubDate>
		<dc:creator>BYVoid</dc:creator>
				<category><![CDATA[USACO]]></category>
		<category><![CDATA[动态规划]]></category>
		<category><![CDATA[广搜]]></category>
		<category><![CDATA[莲花池]]></category>

		<guid isPermaLink="false">http://www.byvoid.com/blog/?p=338</guid>
		<description><![CDATA[广搜实现动态规划。从起始点开始搜索，只要不是石头的点都可以访问。对于网格中每一个点，维护三个参数：从起始点到当前点所要添加的莲花数lily，总起始点到前点的走过的点数skip，到当... ]]></description>
			<content:encoded><![CDATA[<p><span id="more-338"></span><br />
广搜实现动态规划。从起始点开始搜索，只要不是石头的点都可以访问。对于网格中每一个点，维护三个参数：从起始点到当前点所要添加的莲花数lily，总起始点到前点的走过的点数skip，到当前点当前满足条件的路径条数cnt。初始化所有点skip=lily=无穷大，cnt=0。起始点 skip=lily=0，cnt=1。</p>
<p>当位置i时，跳跃有8个方向，最多会访问8个点，对于每个点j，根据当前位置i更新其参数。分以下4种情况：</p>
<p>   1. 如果 i.lily < j.lily ，由i点更新点j所有参数，并把点j加入队列<br />
         1. j.lily <- i.lily<br />
         2. j.skip <- i.skip<br />
         3. j.cnt <- i.cnt<br />
   2. 如果 i.lily = j.lily 并且 i.skip < j.skip ，由i点更新点j的跳跃次数和路径条数，并把点j加入队列<br />
         1. j.skip <- i.skip<br />
         2. j.cnt <- i.cnt<br />
   3. 如果 i.lily = j.lily 并且 i.skip = j.skip ，j的路径条数满足条件，增加量为i的路径条数，并把点j加入队列<br />
         1. j.cnt <- j.cnt + i.cnt<br />
   4. 如果不满足以上条件，不更新改点。 </p>
<p>最终结果为目标点T的lily,skip,cnt。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p338code4'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p3384"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
</pre></td><td class="code" id="p338code4"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#define MAX 31</span>
<span style="color: #339900;">#define INF 0x7ffffff</span>
<span style="color: #339900;">#define Source 3</span>
<span style="color: #339900;">#define Destination 4</span>
<span style="color: #339900;">#define Stone 2</span>
<span style="color: #339900;">#define Lily 1</span>
<span style="color: #339900;">#define Water 0</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">struct</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> x,y<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>point<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">class</span> tQueue
<span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
	<span style="color: #0000ff;">class</span> linklist
	<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
		linklist<span style="color: #000040;">*</span> next<span style="color: #008080;">;</span>
		point value<span style="color: #008080;">;</span>
		linklist<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			next<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
	linklist <span style="color: #000040;">*</span>first,<span style="color: #000040;">*</span>last<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> size<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">bool</span> inq<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">void</span> add<span style="color: #008000;">&#40;</span>point p<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>inq<span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
		inq<span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>size<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
			first<span style="color: #000080;">=</span>last<span style="color: #000080;">=</span><span style="color: #0000dd;">new</span> linklist<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span>
			last<span style="color: #000080;">=</span>last<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>next<span style="color: #000080;">=</span><span style="color: #0000dd;">new</span> linklist<span style="color: #008080;">;</span>
		last<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>value<span style="color: #000080;">=</span>p<span style="color: #008080;">;</span>
		size<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	point del<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		point rtn<span style="color: #000080;">=</span>first<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>value<span style="color: #008080;">;</span>
		inq<span style="color: #008000;">&#91;</span>rtn.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>rtn.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
		linklist <span style="color: #000040;">*</span>tfirst<span style="color: #000080;">=</span>first<span style="color: #008080;">;</span>
		first<span style="color: #000080;">=</span>first<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>next<span style="color: #008080;">;</span>
		<span style="color: #0000dd;">delete</span> tfirst<span style="color: #008080;">;</span>
		size<span style="color: #000040;">--</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">return</span> rtn<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">void</span> reset<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		size<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
		first<span style="color: #000080;">=</span>last<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	tQueue<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		reset<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">class</span> gird
<span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
	<span style="color: #0000ff;">int</span> m<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> lily,skip<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">long</span> <span style="color: #0000ff;">long</span> cnt<span style="color: #008080;">;</span>
	gird<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		lily<span style="color: #000080;">=</span>skip<span style="color: #000080;">=</span>INF<span style="color: #008080;">;</span>
		cnt<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> N,M<span style="color: #008080;">;</span>
gird G<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> dx<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">8</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#123;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">2</span>,<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">2</span>,<span style="color: #0000dd;">2</span>,<span style="color: #0000dd;">1</span>,<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>,<span style="color: #000040;">-</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#125;</span>,dy<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">8</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#123;</span><span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">2</span>,<span style="color: #0000dd;">2</span>,<span style="color: #0000dd;">1</span>,<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>,<span style="color: #000040;">-</span><span style="color: #0000dd;">2</span>,<span style="color: #000040;">-</span><span style="color: #0000dd;">2</span>,<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
point S,T<span style="color: #008080;">;</span>
tQueue Q<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">void</span> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,c<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;silvlily.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;silvlily.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>N,<span style="color: #000040;">&amp;</span>M<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>c<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			G<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">m</span><span style="color: #000080;">=</span>c<span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000080;">==</span>Source<span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				S.<span style="color: #007788;">x</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>S.<span style="color: #007788;">y</span><span style="color: #000080;">=</span>j<span style="color: #008080;">;</span>
				G<span style="color: #008000;">&#91;</span>S.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>S.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">cnt</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
				G<span style="color: #008000;">&#91;</span>S.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>S.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">lily</span><span style="color: #000080;">=</span>G<span style="color: #008000;">&#91;</span>S.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>S.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">skip</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
			<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000080;">==</span>Destination<span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				T.<span style="color: #007788;">x</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>T.<span style="color: #007788;">y</span><span style="color: #000080;">=</span>j<span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">bool</span> inrange<span style="color: #008000;">&#40;</span>point p<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">return</span> p.<span style="color: #007788;">x</span><span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">&amp;&amp;</span> p.<span style="color: #007788;">x</span><span style="color: #000080;">&lt;=</span>N <span style="color: #000040;">&amp;&amp;</span> p.<span style="color: #007788;">y</span><span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">&amp;&amp;</span> p.<span style="color: #007788;">y</span><span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> update<span style="color: #008000;">&#40;</span>point p,<span style="color: #0000ff;">int</span> lily,<span style="color: #0000ff;">int</span> skip,<span style="color: #0000ff;">long</span> <span style="color: #0000ff;">long</span> cnt<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>lily<span style="color: #000080;">&lt;</span>G<span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">lily</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		G<span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">lily</span><span style="color: #000080;">=</span>lily<span style="color: #008080;">;</span>
		G<span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">skip</span><span style="color: #000080;">=</span>skip<span style="color: #008080;">;</span>
		G<span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">cnt</span><span style="color: #000080;">=</span>cnt<span style="color: #008080;">;</span>
		Q.<span style="color: #007788;">add</span><span style="color: #008000;">&#40;</span>p<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>lily<span style="color: #000080;">==</span>G<span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">lily</span> <span style="color: #000040;">&amp;&amp;</span> skip<span style="color: #000080;">&lt;</span>G<span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">skip</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		G<span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">skip</span><span style="color: #000080;">=</span>skip<span style="color: #008080;">;</span>
		G<span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">cnt</span><span style="color: #000080;">=</span>cnt<span style="color: #008080;">;</span>
		Q.<span style="color: #007788;">add</span><span style="color: #008000;">&#40;</span>p<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>lily<span style="color: #000080;">==</span>G<span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">lily</span> <span style="color: #000040;">&amp;&amp;</span> skip<span style="color: #000080;">==</span>G<span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">skip</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		G<span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">cnt</span><span style="color: #000040;">+</span><span style="color: #000080;">=</span>cnt<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> bfs<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	point i,j<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> k,sp<span style="color: #008080;">;</span>
	Q.<span style="color: #007788;">add</span><span style="color: #008000;">&#40;</span>S<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>Q.<span style="color: #007788;">size</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		i<span style="color: #000080;">=</span>Q.<span style="color: #007788;">del</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>k<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>k<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">8</span><span style="color: #008080;">;</span>k<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			j.<span style="color: #007788;">x</span><span style="color: #000080;">=</span>i.<span style="color: #007788;">x</span><span style="color: #000040;">+</span>dx<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>j.<span style="color: #007788;">y</span><span style="color: #000080;">=</span>i.<span style="color: #007788;">y</span><span style="color: #000040;">+</span>dy<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>inrange<span style="color: #008000;">&#40;</span>j<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				sp<span style="color: #000080;">=</span>G<span style="color: #008000;">&#91;</span>i.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>i.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">lily</span><span style="color: #008080;">;</span>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>G<span style="color: #008000;">&#91;</span>j.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">m</span><span style="color: #000080;">==</span>Stone<span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>G<span style="color: #008000;">&#91;</span>j.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">m</span><span style="color: #000080;">==</span>Water<span style="color: #008000;">&#41;</span>
					sp<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
				update<span style="color: #008000;">&#40;</span>j,sp,G<span style="color: #008000;">&#91;</span>i.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>i.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">skip</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,G<span style="color: #008000;">&#91;</span>i.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>i.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">cnt</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	bfs<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>G<span style="color: #008000;">&#91;</span>T.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>T.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">lily</span><span style="color: #000080;">==</span>INF<span style="color: #008000;">&#41;</span>
		<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span>
		<span style="color: #0000dd;">cout</span>
			<span style="color: #000080;">&lt;&lt;</span> G<span style="color: #008000;">&#91;</span>T.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>T.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">lily</span> <span style="color: #000080;">&lt;&lt;</span> endl
			<span style="color: #000080;">&lt;&lt;</span> G<span style="color: #008000;">&#91;</span>T.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>T.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">skip</span> <span style="color: #000080;">&lt;&lt;</span> endl
			<span style="color: #000080;">&lt;&lt;</span> G<span style="color: #008000;">&#91;</span>T.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>T.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">cnt</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<blockquote><p>
<a href="http://cogs.3322.org/wiki/USACOMonthly/2007_02_S/Silver_Lilypad_Pond/Chinese">银色莲花池</a></p>
<p>译 By BYVoid</p>
<p>描述</p>
<p>Farmer John 建造了一个美丽的池塘，用于让他的牛们审美和锻炼。这个长方形的池子被分割成了 M 行和 N 列( 1 ≤ M ≤ 30 ; 1 ≤ N ≤ 30 ) 正方形格子的 。某些格子上有惊人的坚固的莲花，还有一些岩石，其余的只是美丽，纯净，湛蓝的水。</p>
<p>贝茜正在练习芭蕾舞，她从一个莲花跳跃到另一个莲花，当前位于一个莲花。她希望在莲花上一个一个的跳，目标是另一个给定莲花。她能跳既不入水，也不到一个岩石上。</p>
<p>令门外汉惊讶的是，贝茜的每次的跳跃像国际象棋中的骑士一样：横向移动1，纵向移动2，或纵向移动，横向移动2。贝茜有时可能会有多达8个选择的跳跃。</p>
<p>Farmer John 在观察贝茜的芭蕾舞联系，他意识到有时候贝茜有可能跳不到她想去的目的地，因为路上有些地方没有莲花。于是他想要添加几个莲花使贝茜能够完成任务。一贯节俭的Farmer John想添加最少数量的莲花。当然，莲花不能放在石头上。</p>
<p>请帮助Farmer John确定必须要添加的莲花的最少数量。在添加的莲花最少基础上，算出贝茜从起始点跳到目标点需要的最少的步数。最后，还要算出满足添加的莲花的最少数量时，跳跃最少步数的跳跃路径的条数。</p>
<p>输入</p>
<p>    * 第 1 行: 两个整数 M , N<br />
    * 第 2..M + 1 行:第 i + 1 行，第 i + 1 行 有 N 个整数，表示该位置的状态: 0 为水; 1 为莲花; 2 为岩石; 3 为贝茜开始的位置; 4 为贝茜要去的目标位置. </p>
<p>输出</p>
<p>    * 第 1 行: 一个整数: 需要添加的最少的莲花数. 如果无论如何贝茜也无法跳到，输出 -1.<br />
    * 第 2 行: 一个整数: 在添加的莲花最少基础上，贝茜从起始点跳到目标点需要的最少的步数。如果第1行输出-1，这行不输出。<br />
    * 第 3 行: 一个整数: 添加的莲花的最少数量时，跳跃步数为第2行输出的值的跳跃路径的条数 如果第1行输出-1，这行不输出。 </p>
<p>样例输入</p>
<p>4 8<br />
0 0 0 1 0 0 0 0<br />
0 0 0 0 0 2 0 1<br />
0 0 0 0 0 4 0 0<br />
3 0 0 0 0 0 1 0</p>
<p>样例输出</p>
<p>2<br />
6<br />
2</p>
<p>输出说明</p>
<p>至少要添加2朵莲花，放在了&#8217;x'的位置。</p>
<p>  0 0 0 1 0 0 0 0     0 0 0 1 0 0 0 0<br />
  0 x 0 0 0 2 0 1     0 0 0 0 0 2 0 1<br />
  0 0 0 0 x 4 0 0     0 0 x 0 x 4 0 0<br />
  3 0 0 0 0 0 1 0     3 0 0 0 0 0 1 0</p>
<p>贝茜至少要条6步，有以下两种方案</p>
<p>  0 0 0 C 0 0 0 0     0 0 0 C 0 0 0 0<br />
  0 B 0 0 0 2 0 F     0 0 0 0 0 2 0 F<br />
  0 0 0 0 D G 0 0     0 0 B 0 D G 0 0<br />
  A 0 0 0 0 0 E 0     A 0 0 0 0 0 E 0
</p></blockquote>
<h3  class="related_post_title">Maybe you like</h3><ul class="related_post"><li><a href="http://www.byvoid.com/blog/usaco-feb07-bronze-bronze-lilypad-pond/" title="USACO FEB07 Bronze Bronze Lilypad Pond 青铜莲花池">USACO FEB07 Bronze Bronze Lilypad Pond 青铜莲花池</a></li><li><a href="http://www.byvoid.com/blog/usaco-mar07-silver-cow-traffic/" title="USACO MAR07 Silver Cow Traffic 奶牛交通">USACO MAR07 Silver Cow Traffic 奶牛交通</a></li><li><a href="http://www.byvoid.com/blog/usaco-oct07-silver-obstacle-course/" title="USACO OCT07 Silver Obstacle Course 障碍训练场">USACO OCT07 Silver Obstacle Course 障碍训练场</a></li><li><a href="http://www.byvoid.com/blog/usaco-nov07-silver-milking-time/" title="USACO NOV07 Silver Milking Time 挤奶时间">USACO NOV07 Silver Milking Time 挤奶时间</a></li><li><a href="http://www.byvoid.com/blog/usaco-feb08-silver-eating-together/" title="USACO FEB08 Silver Eating Together 麻烦的聚餐">USACO FEB08 Silver Eating Together 麻烦的聚餐</a></li><li><a href="http://www.byvoid.com/blog/usaco-feb08-silver-meteor-shower/" title="USACO FEB08 Silver Meteor Shower 流星雨">USACO FEB08 Silver Meteor Shower 流星雨</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.byvoid.com/blog/usaco-feb07-silver-silver-lilypad-pond/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>USACO FEB07 Bronze Bronze Lilypad Pond 青铜莲花池</title>
		<link>http://www.byvoid.com/blog/usaco-feb07-bronze-bronze-lilypad-pond/</link>
		<comments>http://www.byvoid.com/blog/usaco-feb07-bronze-bronze-lilypad-pond/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 14:20:39 +0000</pubDate>
		<dc:creator>BYVoid</dc:creator>
				<category><![CDATA[USACO]]></category>
		<category><![CDATA[广搜]]></category>
		<category><![CDATA[莲花池]]></category>
		<category><![CDATA[跳马]]></category>

		<guid isPermaLink="false">http://www.byvoid.com/blog/?p=336</guid>
		<description><![CDATA[跳马问题的变化版，广度优先搜索。 从原点开始，每个点搜索8个方向的点，搜索到目标点时的步数最少。 ?View Code CPP1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ... ]]></description>
			<content:encoded><![CDATA[<p><span id="more-336"></span><br />
跳马问题的变化版，广度优先搜索。</p>
<p>从原点开始，每个点搜索8个方向的点，搜索到目标点时的步数最少。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p336code6'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p3366"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
</pre></td><td class="code" id="p336code6"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#define MAX 31</span>
&nbsp;
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">struct</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> x,y<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>point<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">class</span> tQueue
<span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
	<span style="color: #0000ff;">class</span> linklist
	<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
		linklist<span style="color: #000040;">*</span> next<span style="color: #008080;">;</span>
		point value<span style="color: #008080;">;</span>
		linklist<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			next<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
	linklist <span style="color: #000040;">*</span>first,<span style="color: #000040;">*</span>last<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> size<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">void</span> add<span style="color: #008000;">&#40;</span>point p<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>size<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
			first<span style="color: #000080;">=</span>last<span style="color: #000080;">=</span><span style="color: #0000dd;">new</span> linklist<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span>
			last<span style="color: #000080;">=</span>last<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>next<span style="color: #000080;">=</span><span style="color: #0000dd;">new</span> linklist<span style="color: #008080;">;</span>
		last<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>value<span style="color: #000080;">=</span>p<span style="color: #008080;">;</span>
		size<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	point del<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		point rtn<span style="color: #000080;">=</span>first<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>value<span style="color: #008080;">;</span>
		linklist <span style="color: #000040;">*</span>tfirst<span style="color: #000080;">=</span>first<span style="color: #008080;">;</span>
		first<span style="color: #000080;">=</span>first<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>next<span style="color: #008080;">;</span>
		<span style="color: #0000dd;">delete</span> tfirst<span style="color: #008080;">;</span>
		size<span style="color: #000040;">--</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">return</span> rtn<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">void</span> reset<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		size<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
		first<span style="color: #000080;">=</span>last<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	tQueue<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		reset<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> N,M,X,Y,Ans<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> dx<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">8</span><span style="color: #008000;">&#93;</span>,dy<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">8</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</span> map<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> step<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
point S,T<span style="color: #008080;">;</span>
tQueue Q<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">void</span> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,c<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;bronlily.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;bronlily.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> N <span style="color: #000080;">&gt;&gt;</span> M <span style="color: #000080;">&gt;&gt;</span> X <span style="color: #000080;">&gt;&gt;</span> Y<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> c<span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">||</span> c<span style="color: #000080;">==</span><span style="color: #0000dd;">4</span><span style="color: #008000;">&#41;</span>
				map<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000080;">==</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#41;</span>
				S.<span style="color: #007788;">x</span><span style="color: #000080;">=</span>i,S.<span style="color: #007788;">y</span><span style="color: #000080;">=</span>j<span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000080;">==</span><span style="color: #0000dd;">4</span><span style="color: #008000;">&#41;</span>
				T.<span style="color: #007788;">x</span><span style="color: #000080;">=</span>i,T.<span style="color: #007788;">y</span><span style="color: #000080;">=</span>j<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	dx<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span>X<span style="color: #008080;">;</span> dy<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span>Y<span style="color: #008080;">;</span>
	dx<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span>X<span style="color: #008080;">;</span> dy<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span> Y<span style="color: #008080;">;</span>
	dx<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span> X<span style="color: #008080;">;</span> dy<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span>Y<span style="color: #008080;">;</span>
	dx<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span> X<span style="color: #008080;">;</span> dy<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span> Y<span style="color: #008080;">;</span>
	dx<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span>Y<span style="color: #008080;">;</span> dy<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span>X<span style="color: #008080;">;</span>
	dx<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">5</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span>Y<span style="color: #008080;">;</span> dy<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">5</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span> X<span style="color: #008080;">;</span>
	dx<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">6</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span> Y<span style="color: #008080;">;</span> dy<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">6</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span>X<span style="color: #008080;">;</span>
	dx<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">7</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span> Y<span style="color: #008080;">;</span> dy<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">7</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span> X<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">bool</span> inrange<span style="color: #008000;">&#40;</span>point p<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">return</span> p.<span style="color: #007788;">x</span><span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">&amp;&amp;</span> p.<span style="color: #007788;">x</span> <span style="color: #000080;">&lt;=</span>N <span style="color: #000040;">&amp;&amp;</span> p.<span style="color: #007788;">y</span> <span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">&amp;&amp;</span> p.<span style="color: #007788;">y</span><span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> bfs<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> k<span style="color: #008080;">;</span>
	point i,j<span style="color: #008080;">;</span>
	Q.<span style="color: #007788;">add</span><span style="color: #008000;">&#40;</span>S<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>Q.<span style="color: #007788;">size</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		i<span style="color: #000080;">=</span>Q.<span style="color: #007788;">del</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>k<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>k<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">8</span><span style="color: #008080;">;</span>k<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			j.<span style="color: #007788;">x</span><span style="color: #000080;">=</span>i.<span style="color: #007788;">x</span><span style="color: #000040;">+</span>dx<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			j.<span style="color: #007788;">y</span><span style="color: #000080;">=</span>i.<span style="color: #007788;">y</span><span style="color: #000040;">+</span>dy<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>inrange<span style="color: #008000;">&#40;</span>j<span style="color: #008000;">&#41;</span> <span style="color: #000040;">&amp;&amp;</span> map<span style="color: #008000;">&#91;</span>j.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">&amp;&amp;</span> step<span style="color: #008000;">&#91;</span>j.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				step<span style="color: #008000;">&#91;</span>j.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>step<span style="color: #008000;">&#91;</span>i.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>i.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>j.<span style="color: #007788;">x</span><span style="color: #000080;">==</span>T.<span style="color: #007788;">x</span> <span style="color: #000040;">&amp;&amp;</span> j.<span style="color: #007788;">y</span><span style="color: #000080;">==</span>T.<span style="color: #007788;">y</span><span style="color: #008000;">&#41;</span>
					<span style="color: #0000ff;">return</span> step<span style="color: #008000;">&#91;</span>j.<span style="color: #007788;">x</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j.<span style="color: #007788;">y</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
				Q.<span style="color: #007788;">add</span><span style="color: #008000;">&#40;</span>j<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	Ans<span style="color: #000080;">=</span>bfs<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> Ans <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<blockquote><p>
<a href="http://www.ruvtex.cn/wiki/USACOMonthly/2007_02_B/Bronze_Lilypad_Pond/Chinese">青铜莲花池</a></p>
<p>译 By BYVoid</p>
<p>描述</p>
<p>Farmer John 建造了一个美丽的池塘，用于让他的牛们审美和锻炼。这个长方形的池子被分割成了 M 行和 N 列( 1 ≤ M ≤ 30 ; 1 ≤ N ≤ 30 ) 正方形格子的 。某些格子上有惊人的坚固的莲花，还有一些岩石，其余的只是美丽，纯净，湛蓝的水。</p>
<p>贝茜正在练习芭蕾舞，她从一个莲花跳跃到另一个莲花，当前位于一个莲花。她希望在莲花上一个一个的跳，目标是另一个给定莲花。她能跳既不入水，也不到一个岩石上。</p>
<p>令门外汉惊讶的是，贝茜的每次的跳跃像国际象棋中的骑士一样：横向移动M1(1 ≤M1 ≤ 30 )，纵向移动然后量M2 (1 ≤M2 ≤ 30 ;M1 ≠ M2 ) ，或纵向移动然后量M1，横向移动M2。贝茜有时可能会有多达8个选择的跳跃。</p>
<p>给定池塘的布局和贝茜的跳跃格式，请确定贝茜从从她的出发位置，到最终目的地，最小的跳跃次数，贝茜在给出测试数据一定可以跳到目的地。</p>
<p>输入</p>
<p>    * 第 1 行: 四个用空格隔开的整数: M, N, M1, M2<br />
    * 第 2..M + 1 行: 第 i + 1 行 有 N 个整数，表示该位置的状态: 0 为水; 1 为莲花; 2 为岩石; 3 为贝茜开始的位置; 4 为贝茜要去的目标位置. </p>
<p>输出</p>
<p>    * 第 1 行: 一个整数，从起始点到要去的位置，贝茜最小的跳跃次数。 </p>
<p>样例输入</p>
<p>4 5 1 2<br />
1 0 1 0 1<br />
3 0 2 0 4<br />
0 1 2 0 0<br />
0 0 0 1 0</p>
<p>样例输出</p>
<p>2</p>
<p>输入解释</p>
<p>贝茜从第2行第1个位置开始，她的目标在第2行最右边。几个</p>
<p>输出解释</p>
<p>贝茜聪明地跳跃到了第1行第3个位置，然后就到了目的地。
</p></blockquote>
<h3  class="related_post_title">Maybe you like</h3><ul class="related_post"><li><a href="http://www.byvoid.com/blog/usaco-feb07-silver-silver-lilypad-pond/" title="USACO FEB07 Silver Silver Lilypad Pond  银色莲花池">USACO FEB07 Silver Silver Lilypad Pond  银色莲花池</a></li><li><a href="http://www.byvoid.com/blog/pku-3255/" title="pku 3255 Roadblocks">pku 3255 Roadblocks</a></li><li><a href="http://www.byvoid.com/blog/poi-1999-bit/" title="POI 1999 位图 Bitmap">POI 1999 位图 Bitmap</a></li><li><a href="http://www.byvoid.com/blog/poi-1997-ali/" title="POI 1997 阿里巴巴 Ali Baba">POI 1997 阿里巴巴 Ali Baba</a></li><li><a href="http://www.byvoid.com/blog/grover-morgan/" title="我叫 Grover Morgan">我叫 Grover Morgan</a></li><li><a href="http://www.byvoid.com/blog/usaco-mar07-silver-monthly-expense/" title="USACO MAR07 Silver Monthly Expense 月度花费">USACO MAR07 Silver Monthly Expense 月度花费</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.byvoid.com/blog/usaco-feb07-bronze-bronze-lilypad-pond/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
