UVA 11624 不知道为什么WA
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVA 11624 不知道为什么WA相关的知识,希望对你有一定的参考价值。
#include<cstdio> #include<iostream> #include<queue> #include<string> #include<math.h> #include<stack> #include<cstdlib> #include<map> #include<cstring> #include<vector> #include<algorithm> #include<cctype> #include<sstream> typedef long long ll; using namespace std; struct Node{ int x,y; int t; Node(int x,int y,int t):x(x),y(y),t(t){} }; int n,m; char maps[1050][1050]; bool vis[1050][1050]; int firet[1050][1050]; int fx,fy,sx,sy; int tx[4] = {-1,0,1,0 }; int ty[4] = {0,-1,0,1 }; queue<Node> fq; queue<Node> jq; bool escape(int dx,int dy){ return dx==0 || dx==n-1 || dy==0 || dy==m-1; } bool ok(int dx,int dy,int t){ if(maps[dx][dy] == ‘#‘) return false; if(vis[dx][dy]) return false; if(firet[dx][dy] != 0 && firet[dx][dy] <= t) return false; return true; } void input(){ while(!fq.empty()) fq.pop(); memset(maps,0,sizeof(maps)); memset(vis,0,sizeof(vis)); memset(firet,0,sizeof(firet)); scanf("%d%d",&n,&m); for(int i = 0 ; i < n ; i ++){ scanf("%s",maps[i]); for(int j = 0 ; j < m ; j ++) if(maps[i][j] == ‘F‘){ fq.push(Node(i,j,1)); firet[i][j] = 1; }else if(maps[i][j] == ‘J‘){ sx = i , sy = j; } } } void bfs_fire(){ while(!fq.empty()){ Node tmp = fq.front(); fq.pop(); int x = tmp.x , y = tmp.y; for(int i = 0 ; i < 4 ; i ++){ int xx = x + tx[i]; int yy = y + ty[i]; int t = tmp.t+1; if((maps[xx][yy] == ‘.‘ || maps[xx][yy] == ‘J‘) && (xx>=0 && xx<n && yy>=0 && yy<m) && firet[xx][yy] == 0){ //着火符合条件 firet[xx][yy] = t; fq.push(Node(xx,yy,t)); } } } } void bfs_escape(){ Node start(sx,sy,1); jq.push(start); while(!jq.empty()){ Node tmp = jq.front(); jq.pop(); int x = tmp.x , y = tmp.y , tmpt = tmp.t; if(escape(x,y)){ printf("%d\n",tmpt); return; } for(int i = 0 ; i < 4 ; i ++){ int xx = x + tx[i]; int yy = y + ty[i]; int t = tmp.t + 1; if(ok(xx,yy,t)){ vis[xx][yy] = true; jq.push(Node(xx,yy,t)); } } } printf("IMPOSSIBLE\n"); } int main(){ int T; scanf("%d",&T); while(T--){ input(); bfs_fire(); bfs_escape(); } return 0; }
以上是关于UVA 11624 不知道为什么WA的主要内容,如果未能解决你的问题,请参考以下文章