hdu 1180 bfs(奇偶性)
来源:互联网 发布:电脑包推荐 知乎 编辑:程序博客网 时间:2024/05/18 13:09
点击打开链接
#include <iostream>#include <algorithm>#include <queue>#include <cstring>using namespace std;const int M=30;typedef struct{int x2;int y2;}MOVE;MOVE Move[4]={{-1,0},{0,-1},{1,0},{0,1}};struct Node{int x;int y;int time;Node(int x1,int y1,int d):x(x1),y(y1),time(d){}Node(){}bool operator < (const Node &t) const { return time > t.time; }};int m,n,visit[M][M],num,sx,sy,ex,ey;char g[M][M];bool check(int a,int b){if(a>=0&&a<m&&b>=0&&b<n&&!visit[a][b]&&g[a][b]!='*')return 1;elsereturn 0;}void bfs(){priority_queue<Node> q;q.push(Node(sx,sy,0)); // 时间递增 int cur;int i,j,a,b,x1,y1;while(!q.empty()){Node t=q.top();q.pop();x1=t.x;y1=t.y;cur=t.time;if(g[x1][y1]=='T'){cout<<cur<<endl;return;}for(i=0;i<4;i++){a=x1+Move[i].x2;b=y1+Move[i].y2;if(check(a,b)){if(g[a][b]=='|'||g[a][b]=='-'){if(cur%2==0) //利用时间的奇偶性判断 ladder的状态 偶数原样 奇数相反 {if((g[a][b]=='|'&&i%2==0)||(g[a][b]=='-'&&i%2)){j=1;}else{j=2; //要等待一秒 }a=a+Move[i].x2;b=b+Move[i].y2;if(check(a,b)){visit[a][b]=1;q.push(Node(a,b,cur+j));}}else{if((g[a][b]=='|'&&i%2)||(g[a][b]=='-'&&i%2==0)) // 梯子变换了 {j=1;}else{j=2; //要等待一秒 }a=a+Move[i].x2;b=b+Move[i].y2;if(check(a,b)){visit[a][b]=1;q.push(Node(a,b,cur+j));}}}else{visit[a][b]=1;q.push(Node(a,b,t.time+1));}}}}}int main(){while(cin>>m>>n){memset(visit,0,sizeof(visit));int i,j;for(i=0;i<m;i++){for(j=0;j<n;j++){cin>>g[i][j];if(g[i][j]=='S'){sx=i;sy=j;}}}bfs();} return 0;}
0 0
- hdu 1180 bfs(奇偶性)
- hdu--1010--DFS--奇偶性剪枝
- hdu 1010 dfs+奇偶性剪枝
- hdu 1010 dfs+奇偶性剪枝
- HDU 1010 Bone 奇偶性剪枝
- HDU 1180(bfs)
- hdu 1180 BFS
- 奇偶性
- 奇偶性
- HDU 1564 考虑奇偶性的变化
- hdu 1010 回溯加奇偶性剪枝
- HDU 6129 lucas判断组合数奇偶性
- HDU 1180 诡异楼梯 bfs
- HDU bfs
- hdu--1010--DFS(奇偶性剪枝之经典)
- HDU 1010 Tempter of the Bone(DP+奇偶性剪枝)
- HDU 1010 Tempter of the Bone(DFS+奇偶性剪枝)
- HDU 1010 Tempter of the Bone(dfs + 奇偶性剪枝)
- C++第五次作业
- 欧拉图【回路】和半欧拉图【通路】//很棒的一篇总结
- Linux学习之case语句
- hadoop单机/伪分布式安装---实用
- 《App后台开发运维和架构实践》样章下载
- hdu 1180 bfs(奇偶性)
- 使用默认的网络会话进行网络请求
- Linux 操作系统一些常识
- 微信公众平台向特定用户推送消息
- 分布式锁1 Java常用技术方案
- c++作业7
- JDBC
- 常见的进程调度算法
- C++第7次实验