标签:font most multi ref wan pop tput har strong
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 25131 Accepted Submission(s):
8195
#include<queue> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int x11,y11,x22,y22; char map[210][210]; int dx[4]={1,-1,0,0}; int dy[4]={0,0,1,-1}; int n,m,ans=0x7f7f7f7f; int vis[201][201],an[201][201][2]; void bfs(int x,int y,int opt){ queue<int>quex,quey,step; memset(vis,0,sizeof(vis)); quex.push(x);quey.push(y); step.push(0);vis[x][y]=1; while(!quex.empty()){ int nowx=quex.front();quex.pop(); int nowy=quey.front();quey.pop(); int nows=step.front();step.pop(); if(map[nowx][nowy]==‘@‘) an[nowx][nowy][opt]=nows; for(int i=0;i<4;i++){ int cx=nowx+dx[i]; int cy=nowy+dy[i]; int cs=nows+11; if(cx>=1&&cx<=n&&cy>=1&&cy<=m&&map[cx][cy]!=‘#‘&&!vis[cx][cy]){ quex.push(cx);quey.push(cy); step.push(cs);vis[cx][cy]=1; } } } } int main(){ while(scanf("%d%d",&n,&m)!=EOF){ for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){ cin>>map[i][j]; if(map[i][j]==‘M‘){ x11=i;y11=j; } if(map[i][j]==‘Y‘){ x22=i;y22=j; } } bfs(x11,y11,0);bfs(x22,y22,1); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(vis[i][j]&&map[i][j]==‘@‘) ans=min(ans,an[i][j][0]+an[i][j][1]); printf("%d\n",ans); ans=0x3f3f3f3f; //memset(an,0x7f,sizeof(an)); } }
标签:font most multi ref wan pop tput har strong
原文地址:https://www.cnblogs.com/cangT-Tlan/p/9911000.html