#bfs#[luogu 2873] [USACO07DEC]泥水坑Mud Puddles

題目

https://www.luogu.org/problem/P2873



代碼

#include<cstdio>
#include<algorithm>
#include<queue>
#define mp(x,y) make_pair(x,y)
#define rep(i,x,y) for(int i=x;i<=y;i++)
using namespace std; 
const int qx[4]={0,1,0,-1},qy[4]={1,0,-1,0},N=3005; 
int xx,yy,n,b[N][N]; 
queue<pair<int,int> >q; 
int main(){
	scanf("%d%d%d",&xx,&yy,&n); xx+=1000,yy+=1000; 
	for(int i=1,x,y;i<=n;i++) scanf("%d%d",&x,&y),b[x+1000][y+1000]=-1; 
	q.push(mp(1000,1000)); b[1000][1000]=1; 
	while (q.size()){
		int x=q.front().first,y=q.front().second; q.pop(); 
		rep(i,0,3){
			int ax=x+qx[i],ay=y+qy[i]; 
			if (b[ax][ay]!=0||b[ax][ay]==-1) continue; 
			if (ax<0||ay<0||ax>=N||ay>=N) continue; 
			b[ax][ay]=b[x][y]+1; 
			if (ax==xx&&ay==yy) {
				printf("%d",b[ax][ay]-1); 
				return 0; 			
			}
			q.push(mp(ax,ay)); 
		}
	}
}

/*
1 2 7
0 2
-1 3
3 1
1 1
4 2
-1 1
2 2
*/

發佈了649 篇原創文章 · 獲贊 343 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章