hdu 1429胜利大逃亡(续)
来源:互联网 发布:个性化排序算法 编辑:程序博客网 时间:2024/03/29 23:24
状态压缩+宽搜
#include<cstdio>#include<iostream>#include<cstring>#include<queue>using namespace std;int n,m,t;int sx,sy;int vis[25][25][1<<12];char map[25][25];int dir[4][2]={1,0,-1,0,0,1,0,-1};struct state{int x,y,key,nowTime;state(){}state(int xx,int yy,int kk,int nn):x(xx),y(yy),key(kk),nowTime(nn){}void get(int xx,int yy,int kk,int nn){x=xx,y=yy,key=kk,nowTime=nn;} bool judge() {if(x>=0&&x<n&&y>=0&&y<m&&map[x][y]!='*') return 1;return 0; } }start;int bfs(){queue<state> q;q.push(start);while(!q.empty()){state u=q.front();q.pop();if(map[u.x][u.y]=='^'&&u.nowTime<t) return u.nowTime; if(u.nowTime>=t) break;for(int i=0;i<4;i++){ state v=u; v.x+=dir[i][0] ; v.y+=dir[i][1] ; v.nowTime++ ; if(v.judge()) {if(map[v.x][v.y]>='A'&&map[v.x][v.y]<='J'){int key=(map[v.x][v.y]-'A');if((v.key&(1<<key))&&!vis[v.x][v.y][v.key]) { vis[v.x][v.y][v.key]=1; q.push(v) ; } } else if(map[v.x][v.y]>='a'&&map[v.x][v.y]<='j') { int key =(1<<(map[v.x][v.y] - 'a')) ; v.key = (v.key|key) ; if(!vis[v.x][v.y][v.key]) { vis[v.x][v.y][v.key]=1; q.push(v); } } else { if(!vis[v.x][v.y][v.key]) { vis[v.x][v.y][v.key]=1; q.push(v); } } } }}return -1;}int main(){while(cin>>n>>m>>t){memset(vis,0,sizeof(vis));for(int i=0;i<n;i++){cin>>map[i];for(int j=0;j<m;j++)if(map[i][j]=='@'){start.get(i,j,0,0);vis[i][j][0]=1;}}cout<<bfs()<<endl;}return 0;}
- HDU 1429 胜利大逃亡(续)
- hdu 1429胜利大逃亡(续)
- hdu 1429 胜利大逃亡(续)
- HDU 1429 胜利大逃亡(续)
- hdu 1429 胜利大逃亡(续)
- hdu 1429 胜利大逃亡(续)
- HDU 1429 胜利大逃亡(续)
- hdu 1429胜利大逃亡(续)
- HDU 1429 胜利大逃亡(续)
- hdu 1429 胜利大逃亡(续)
- hdu-1429 胜利大逃亡(续)
- HDU 1429 胜利大逃亡(续)
- Hdu 1429 胜利大逃亡(续)
- hdu 1429 胜利大逃亡(续)
- HDU--1429 胜利大逃亡(续)
- 1429 胜利大逃亡( 续 ) hdu
- HDU 1429 胜利大逃亡(续)
- hdu 1429 胜利大逃亡(续)
- PL/SQL Developer导入导出数据库方法及说明
- Java IO体系之强大的RandomAccessFile
- java 调用webservice时抛异常(Fault occurred while processing)的解决方案
- jstl fmt标签的使用
- EXCEL技巧
- hdu 1429胜利大逃亡(续)
- 基于单幅图像的2D转3D算法研究
- ipc 通讯之ftok
- 关于javah编译出错的小问题
- 深入理解windows 消息机制
- 用HTML和JS做简单的注册验证
- java socket通信
- C# TreeView绑定 能展示xml属性
- C语言运算符优先级和口诀