hdu 3004 不错的搜索题(广搜)(二)

2015-01-24 13:18:58 · 作者: · 浏览: 9
][a .cy ]=='D' ) break; if(a .cx ==a .mx &&a .cy ==a .my ) break; if(a .cx ==a .px &&a .cy ==a .py ) break; if(mark [a .cx ][a .cy ][a .mx ][a .my ][a .px ][a .py ]==0 ) { mark [a .cx ][a .cy ][a .mx ][a .my ][a .px ][a .py ]=1 ; q .push (a ); } } } for(i =0 ;i <4 ;i ++) for(j =1 ;j <=10 ;j ++) { a =b ; a .step =b .step +1 ; a .px =dirt [i ][0 ]*j +b .px ; a .py =dirt [i ][1 ]*j +b .py ; if(a .px <0 ||a .px >=n ||a .py <0 ||a .py >=m ) break; if(map [a .px ][a .py ]=='D' ) break; if(map [a .px ][a .py ]=='S' ) break; if(a .px ==a .cx &&a .py ==a .cy ) break; if(a .px ==a .mx &&a .py ==a .my
) break; if(
mark [a .cx ][a .cy ][a .mx ][a .my ][a .px ][a .py ]==0 ) { mark [a .cx ][a .cy ][a .mx ][a .my ][a .px ][a .py ]=1 ; q .push (a ); } } } if(flash ==0 ) printf ("OH!That's impossible!\n" ); return 0 ; } int main() { int i ,j ; int d =1 ; while(~scanf ("%d%d" ,&n ,&m )) { int ci ,cj ,mi ,mj ,pi ,pj ; for(i =0 ;i <n ;i ++) scanf ("%s" ,map [i ]); for(i =0 ;i <n ;i ++) for(j =0 ;j <m ;j ++) { if(map [i ][j ]=='C' ) { ci =i ; cj =j ; } else if(map [i ][j ]=='M' ) { mi =i ; mj =j ; } else if(map [i ][j ]=='P' ) { pi =i ; pj =j ; } else if(map [i ][j ]=='S' ) { xx =i ; yy =j ; } } printf ("Scenario #%d\n" ,d ++); bfs (ci ,cj ,mi ,mj ,pi ,pj ); printf ("\n" ); } return 0 ; }