Bronze Lilypad Pond, 2007 Feb usaco

来源:互联网 发布:乐视tv网络电视好用吗 编辑:程序博客网 时间:2024/04/28 20:46

标准宽搜

#include<stdio.h>#include<queue>using namespace std;int m,n,m1,n1;int dir[8][2];int map[50][50];int sx,sy;int ans[50][50];int vis[50][50];bool fun(int x,int y){if(x>=1&&x<=m&&y>=1&&y<=n)return true;return false;}void bfs(){queue<int>X;queue<int>Y;X.push(sx);Y.push(sy);vis[sx][sy]=1;ans[sx][sy]=0;while(!X.empty()){int ux=X.front();int uy=Y.front();X.pop();Y.pop();if(map[ux][uy]==4){printf("%d",ans[ux][uy]);return ;}for(int i=0;i<8;i++){int vx=ux+dir[i][0];int vy=uy+dir[i][1];if(!vis[vx][vy]&&(map[vx][vy]==1||map[vx][vy]==4)&&fun(vx,vy)){vis[vx][vy]=1;ans[vx][vy]=ans[ux][uy]+1;X.push(vx);Y.push(vy);}}}}int main(){//freopen("bronlily.in","r",stdin);//freopen("bronlily.out","w",stdout);scanf("%d %d %d %d",&m,&n,&m1,&n1);dir[0][0]=m1,dir[0][1]=n1;dir[1][0]=m1,dir[1][1]=-n1;dir[2][0]=-m1,dir[2][1]=n1;dir[3][0]=-m1,dir[3][1]=-n1;dir[4][0]=n1,dir[4][1]=m1;dir[5][0]=n1,dir[5][1]=-m1;dir[6][0]=-n1,dir[6][1]=m1;dir[7][0]=-n1,dir[7][1]=-m1;for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){scanf("%d",&map[i][j]);if(map[i][j]==3){sx=i,sy=j;}}}bfs();}


0 0
原创粉丝点击