【POJ 2312】Battle City
2017-08-05 16:05
357 查看
这是地址
题意就是精简版的坦克大战。。
有草地 打不坏的墙 打的坏的墙 你 和 坦克
特殊优化的BFS
其实是spfa
注意 打的坏的墙代价为2 //打坏 + 走过去
其他的能走的都是1
题意就是精简版的坦克大战。。
有草地 打不坏的墙 打的坏的墙 你 和 坦克
特殊优化的BFS
其实是spfa
注意 打的坏的墙代价为2 //打坏 + 走过去
其他的能走的都是1
#include <iostream> #include <cstring> #include <cstdio> #include <queue> #include <algorithm> using namespace std; int dx[] = {0,1,0,-1}; int dy[] = {1,0,-1,0}; const int MAXN = 505; int m,n,x1,x2,y1,y2; char h,num[MAXN][MAXN]; bool viv[MAXN][MAXN]; struct edge{ int x,y,ans; bool friend operator < (edge a,edge b){ return a.ans > b.ans; } }; priority_queue < edge > q; void init(){ memset(num,0,sizeof(num)); memset(viv,0,sizeof(viv)); x1 = x2 = y1 = y2 = 0; return; } bool out(int x,int y){ if(x < 1 || x > n || y < 0 || y >= m || num[x][y] == 'S' || num[x][y] == 'R' || viv[x][y]) return false; else return true; } int dqs(){ while(!q.empty()) q.pop(); q.push((edge){x1,y1,0}); viv[x1][y1] = true; while(!q.empty()){ edge u = q.top(); q.pop(); if(u.x == x2 && u.y == y2) return u.ans; for(int i = 0; i < 4; i ++){ int tx = dx[i] + u.x; int ty = dy[i] + u.y; if(!out(tx,ty)) continue; if(num[tx][ty] == 'B') q.push((edge){tx,ty,u.ans + 2}); else q.push((edge){tx,ty,u.ans + 1}); viv[tx][ty] = true; } } return -1; } int main(){ while(scanf("%d %d",&n,&m) && m && n){ if(m == 0 && n == 0) break; init(); h = getchar(); for(int i = 1; i <= n; i ++) gets(num[i]); for(int i = 1; i <= n; i ++) for(int j = 0; j < m; j ++){ if(num[i][j] == 'Y') x1 = i,y1 = j; else if(num[i][j] == 'T') x2 = i,y2 = j; } printf("%d\n",dqs()); } return 0; }
相关文章推荐
- poj 2312 Battle City
- poj 2312 Battle City(优先队列)
- poj 2312 Battle City【bfs+优先队列】
- POJ 2312 Battle City (BFS状态搜索)
- poj 2312 Battle City-bfs
- POJ 2312 Battle City(bfs)
- POJ 2312 Battle City
- poj 2312 Battle City(优先队列+bfs)
- POJ 2312 Battle City(优先队列 + BFS)
- POJ 2312 - Battle City
- POJ 2312 Battle City 优先队列+bfs
- 深入探讨POJ 2312 Battle City 优先队列+BFS
- POJ 2312 Battle City
- poj 2312 Battle City
- POJ 2312 Battle City
- NYOJ 284 坦克大战 && POJ 2312 Battle City (广搜+优先队列)
- POJ 2312 Battle City
- POJ 2312 Battle City (bfs+优先队列)
- POJ 题目2312 Battle City(BFS)
- poj 2312 Battle City(优先队列+bfs)