青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

我希望你是我獨家記憶

一段永遠封存的記憶,隨風而去
posts - 263, comments - 31, trackbacks - 0, articles - 3
   :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

P3083——深搜+廣搜

Posted on 2008-09-02 10:35 Hero 閱讀(373) 評論(0)  編輯 收藏 引用 所屬分類: 代碼如詩--ACM
  1 //3083 Accepted 416K 16MS G++ 5141B PKU Children of the Candy Corn
  2 
  3 //深搜 + 廣搜
  4 
  5 #include <stdio.h>
  6 #include <stdlib.h>
  7 #include <string.h>
  8 
  9 const int size = 50 ;
 10 char data[size][size] ;
 11 int flag[size][size] ;
 12 
 13 struct QUE
 14 {
 15     int r ;
 16     int c ;
 17     int step ;
 18 };
 19 struct QUE que[100000] ;
 20 int head, tail ;
 21 
 22 int ldir[5][3] ; int rdir[5][3] ;//左右方向
 23 int udir[5][3] ; int ddir[5][3] ;//上下方向
 24 
 25 int innum ;
 26 int inrow, incol ;
 27 
 28 int snr, snc ;
 29 int enr, enc ;
 30 
 31 int rval, lval, minval ; bool OK ;
 32 
 33 void input()
 34 {
 35     scanf( "%d %d"&incol, &inrow ) ;
 36 
 37     forint i=1; i<=inrow; i++ ) 
 38     {
 39         scanf( "%s", data[i]+1 ) ; //printf( "%s\n", data[i]+1 ) ;
 40     }
 41 
 42     forint r=1; r<=inrow; r++ )
 43     {
 44         forint c=1; c<=incol; c++ )
 45         {
 46             if'S' == data[r][c] ) { snr = r , snc = c ; }
 47             if'E' == data[r][c] ) { enr = r , enc = c ; }
 48         }
 49     }
 50 }
 51 
 52 bool fin( int r, int c )
 53 {
 54     if( r>=1 && r<=inrow && c>=1 && c<=incol )    return true ;
 55     else return false ;
 56 }
 57 
 58 void DFS_left( int sr, int sc, int d, int step )
 59 {
 60     if( OK )    return ;
 61     if(  'E' == data[sr][sc] )
 62     {
 63         lval = step ; OK = true ; return ;
 64     }
 65 
 66     int nextr = sr+ldir[d][0] ; int nextc = sc+ldir[d][1] ; int curd = ldir[d][2] ;
 67     if( fin(nextr, nextc) && ('.'==data[nextr][nextc]||'E'==data[nextr][nextc] ) )
 68         DFS_left( nextr, nextc, curd, step+1 ) ;
 69 
 70     if( OK )    return ;
 71 
 72     nextr = sr+udir[d][0] ; nextc = sc+udir[d][1] ; curd = d ;
 73     if( fin(nextr, nextc) && ('.'==data[nextr][nextc]||'E'==data[nextr][nextc] ) )
 74         DFS_left( nextr, nextc, curd, step+1 ) ;
 75 
 76     if( OK )    return ;
 77 
 78     nextr = sr+rdir[d][0] ; nextc = sc+rdir[d][1] ; curd = rdir[d][2] ;
 79     if( fin(nextr, nextc) && ('.'==data[nextr][nextc]||'E'==data[nextr][nextc] ) )
 80         DFS_left( nextr, nextc, curd, step+1 ) ;
 81 
 82     if( OK )    return ;
 83 
 84     nextr = sr+ddir[d][0] ; nextc = sc+ddir[d][1] ; curd = 5-d ;
 85     DFS_left( nextr, nextc, curd, step+1 ) ;
 86 }
 87 
 88 void DFS_right( int sr, int sc, int d, int step )
 89 {
 90     if( OK )    return ;
 91     if(  'E' == data[sr][sc] )
 92     {
 93         rval = step ; OK = true ; return ;
 94     }
 95 
 96     int nextr = sr+rdir[d][0] ; int nextc = sc+rdir[d][1] ; int curd = rdir[d][2] ;
 97     if( fin(nextr, nextc) && ('.'==data[nextr][nextc]||'E'==data[nextr][nextc] ) )
 98         DFS_right( nextr, nextc, curd, step+1 ) ;
 99 
100     if( OK )    return ;
101 
102     nextr = sr+udir[d][0] ; nextc = sc+udir[d][1] ; curd = d ;
103     if( fin(nextr, nextc) && ('.'==data[nextr][nextc]||'E'==data[nextr][nextc] ) )
104         DFS_right( nextr, nextc, curd, step+1 ) ;
105 
106     if( OK )    return ;
107 
108     nextr = sr+ldir[d][0] ; nextc = sc+ldir[d][1] ; curd = ldir[d][2] ;
109     if( fin(nextr, nextc) && ('.'==data[nextr][nextc]||'E'==data[nextr][nextc] ) )
110         DFS_right( nextr, nextc, curd, step+1 ) ;
111 
112     if( OK )    return ;
113 
114     nextr = sr+ddir[d][0] ; nextc = sc+ddir[d][1] ; curd = 5-d ;
115     DFS_right( nextr, nextc, curd, step+1 ) ;
116 }
117 
118 void left()
119 {
120     int direct ;
121     if1 == snr ) direct = 4 ; 
122     if1 == snc ) direct = 3 ; 
123     if( inrow == snr ) direct = 1 ; 
124     if( incol == snc ) direct = 2 ; 
125 
126     OK = false ;
127     DFS_left( snr, snc, direct, 1 ) ;
128 }
129 void right()
130 {
131     int direct ;
132     if1 == snr ) direct = 4 ; 
133     if1 == snc ) direct = 3 ; 
134     if( inrow == snr ) direct = 1 ; 
135     if( incol == snc ) direct = 2 ; 
136 
137     OK = false ;
138     DFS_right( snr, snc, direct, 1 ) ;
139 }
140 void init()
141 {
142     ldir[1][0= 0 ;  ldir[1][1= -1 ;   ldir[1][2= 2 ;//1
143     ldir[2][0= 1 ;  ldir[2][1= 0 ;    ldir[2][2= 4 ;
144     ldir[3][0= -1 ; ldir[3][1= 0 ;    ldir[3][2= 1 ;
145     ldir[4][0= 0 ;  ldir[4][1= 1 ;    ldir[4][2= 3 ;
146 
147     rdir[1][0= 0 ;   rdir[1][1= 1 ;   rdir[1][2= 3 ;//1
148     rdir[2][0= -1 ;  rdir[2][1= 0 ;   rdir[2][2= 1 ;
149     rdir[3][0= 1 ;   rdir[3][1= 0 ;   rdir[3][2= 4 ;
150     rdir[4][0= 0 ;   rdir[4][1= -1 ;  rdir[4][2= 2 ;
151 
152     udir[1][0= -1 ;  udir[1][1= 0 ;   udir[1][2= 3 ;//1
153     udir[2][0= 0 ;   udir[2][1= -1 ;  udir[2][2= 1 ;
154     udir[3][0= 0 ;   udir[3][1= 1 ;   udir[3][2= 4 ;
155     udir[4][0= 1 ;   udir[4][1= 0 ;   udir[4][2= 2 ;
156 
157     ddir[1][0= 1 ;   ddir[1][1= 0 ;   ddir[1][2= 3 ;//1
158     ddir[2][0= 0 ;   ddir[2][1= 1 ;   ddir[2][2= 1 ;
159     ddir[3][0= 0 ;   ddir[3][1= -1 ;  ddir[3][2= 4 ;
160     ddir[4][0= -1 ;  ddir[4][1= 0 ;   ddir[4][2= 2 ;
161 }
162 
163 void BFS()
164 {
165     memset( flag, 0sizeof(flag) ) ;
166     head = tail = 0 ; int curr ; int curc ;
167     que[tail].r = snr ; que[tail].c = snc ; que[tail++].step = 1 ; flag[snr][snc] = 1 ;
168 
169     while( head < tail )
170     {
171         curr = que[head].r ; curc = que[head].c ;
172 
173         if'E' == data[curr][curc] ) { minval = que[head].step ; return ; }
174 
175         forint i=1; i<=4; i++ ) {
176             curr = que[head].r+rdir[i][0] ; curc = que[head].c+rdir[i][1] ;
177             if( fin(curr, curc) && 0==flag[curr][curc]&&'.'==data[curr][curc]||'E'==data[curr][curc] )
178             {
179                 flag[curr][curc] = 1 ; que[tail].r = curr ; que[tail].c = curc ; que[tail++].step = que[head].step+1 ;
180             }
181         }
182         head++ ;
183     }
184 }
185 
186 void process()
187 {
188     init() ;
189 
190     left() ;
191 
192     right() ;
193 
194     BFS() ;
195 
196     printf( "%d %d %d\n", lval, rval, minval ) ;
197 }
198 
199 int main()
200 {
201     //freopen( "in.txt", "r", stdin ) ;
202 
203     while( scanf( "%d"&innum ) != EOF )
204     {
205         forint ct=1; ct<=innum; ct++ )
206         {
207             input() ;
208 
209             process() ;
210 
211             //output() ;
212         }
213     }
214 
215     return 0 ;
216 }
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品国产v日韩v亚洲| 国产精品国产自产拍高清av| 亚洲精品国偷自产在线99热| 蜜臀99久久精品久久久久久软件| 久久亚洲精品一区| 亚洲精品国产精品乱码不99| 欧美午夜视频一区二区| 久久国产主播| 亚洲精品黄色| 亚洲一区二区少妇| 国产亚洲免费的视频看| 欧美另类久久久品| 欧美一区二区视频在线| 亚洲高清不卡| 欧美一级理论性理论a| 亚洲国产日韩一级| 亚洲视频一二三| 国产日韩一级二级三级| 午夜精品剧场| 国产精品永久入口久久久| 久久色中文字幕| 99视频精品全部免费在线| 久久精品视频在线播放| 亚洲免费大片| 国产一区二区在线观看免费播放| 欧美日韩成人一区二区| 久久久久久久尹人综合网亚洲| 亚洲经典三级| 久久精品亚洲精品| 亚洲综合大片69999| 亚洲激情小视频| 国产在线精品一区二区夜色| 欧美日韩久久不卡| 久久亚洲精品网站| 午夜精品电影| 亚洲亚洲精品三区日韩精品在线视频| 欧美刺激午夜性久久久久久久| 欧美一区二区免费观在线| 亚洲人午夜精品| 在线欧美一区| 国产综合18久久久久久| 国产精品久久久久久久久久久久久久| 麻豆乱码国产一区二区三区| 欧美一区二区精美| 亚洲一区二区三区精品动漫| 日韩视频专区| 亚洲精品久久7777| 最新亚洲激情| 亚洲第一视频网站| 亚洲高清资源综合久久精品| 你懂的一区二区| 久久午夜激情| 欧美成人dvd在线视频| 鲁大师成人一区二区三区| 久久久夜色精品亚洲| 久久精品中文字幕一区二区三区| 欧美在线免费观看亚洲| 午夜综合激情| 欧美在线免费一级片| 久久视频在线视频| 久久天堂国产精品| 欧美激情第六页| 欧美激情一区二区三区在线视频观看| 欧美国产另类| 亚洲电影av在线| 亚洲精品女人| 亚洲国产高清在线观看视频| 亚洲欧洲日产国产网站| 国产精品爽爽ⅴa在线观看| 亚洲在线观看免费| 一区二区三区毛片| 激情久久中文字幕| 欧美一区二区观看视频| 亚洲欧美精品中文字幕在线| 国产精品黄视频| 在线亚洲免费视频| 久久人人九九| 亚洲欧美日韩一区在线| 欧美精品一区二区三区蜜桃 | 亚洲精品在线免费观看视频| 美日韩免费视频| 国内成人精品2018免费看 | 国产日韩一区二区三区| 亚洲午夜激情| 欧美成人免费在线| 一本色道久久88综合亚洲精品ⅰ | 黄色一区二区在线| 91久久极品少妇xxxxⅹ软件| 国产午夜精品全部视频播放| 性xx色xx综合久久久xx| 亚洲网站在线播放| 午夜精品亚洲| 伊人春色精品| 亚洲国产欧美精品| 亚洲韩国日本中文字幕| 激情一区二区| 日韩亚洲欧美高清| 亚洲国产综合视频在线观看| 欧美日产在线观看| 亚洲欧美激情视频在线观看一区二区三区| 亚洲精选一区二区| 国产精品久久久久一区| 裸体歌舞表演一区二区| 欧美日韩精品免费在线观看视频| a4yy欧美一区二区三区| 亚洲图片你懂的| 日韩一区二区电影网| 在线一区欧美| 欧美h视频在线| 欧美激情1区2区3区| 久久精品理论片| 影音先锋亚洲精品| 欧美精品一区二区三区久久久竹菊| 欧美激情一区| 久久久久久久综合| 国产午夜亚洲精品羞羞网站| 亚洲黄色免费| 噜噜噜噜噜久久久久久91| 欧美另类99xxxxx| 国产欧美日本一区二区三区| 亚洲黄色天堂| 久久夜色精品国产欧美乱| 夜夜精品视频| 欧美日韩亚洲综合一区| 亚洲精品一品区二品区三品区| 老司机67194精品线观看| 久久福利影视| 国内自拍一区| 免费欧美日韩| 免费观看国产成人| 亚洲乱码国产乱码精品精| 亚洲电影免费在线| 小处雏高清一区二区三区| 免费成人在线观看视频| 久久久久久夜| 亚洲精品乱码久久久久久按摩观 | 国产一区二区三区日韩| 久久精品国产一区二区三区免费看| 亚洲欧美日韩一区二区在线| 国产精品视频一区二区高潮| 香蕉久久久久久久av网站| 午夜国产精品视频免费体验区| 国产一区二区三区自拍| 美国三级日本三级久久99| 久久精品99国产精品| 伊人夜夜躁av伊人久久| 亚洲国产精品日韩| 欧美日韩国产精品一区二区亚洲 | 麻豆av福利av久久av| 免费看av成人| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 亚洲线精品一区二区三区八戒| 一本一本久久a久久精品综合妖精| 国产精品久久久久久久久果冻传媒| 久久av一区| 欧美黄色大片网站| 欧美在线播放| 欧美激情按摩在线| 小黄鸭精品aⅴ导航网站入口| 久久久欧美精品| 这里只有精品在线播放| 欧美亚洲综合在线| 在线一区视频| 久热综合在线亚洲精品| 亚洲一区精彩视频| 美女福利精品视频| 久久精品国产99国产精品| 欧美精品免费观看二区| 久久本道综合色狠狠五月| 欧美黑人在线观看| 久久亚洲电影| 国产精品久久久久av免费| 欧美国产日韩亚洲一区| 国产精品一区二区久久精品 | 蜜桃av一区| 国产精品地址| 亚洲第一二三四五区| 国产一区91| 亚洲视频在线观看网站| 最新中文字幕一区二区三区| 欧美在线不卡| 先锋影音久久| 欧美日韩久久精品| 亚洲高清毛片| 一区一区视频| 欧美亚洲视频| 欧美一区国产二区| 亚洲九九九在线观看| 欧美精品久久99| 老司机免费视频久久| 国产日韩精品一区二区三区在线| 亚洲国产婷婷| 1769国内精品视频在线播放| 亚洲欧美日本精品| 亚洲欧美不卡| 国产精品美女在线观看| 这里只有精品在线播放| 亚洲男人的天堂在线观看| 欧美性猛片xxxx免费看久爱 | 欧美激情在线免费观看|