bzoj 1611: [Usaco2008 Feb]Meteor Shower流星雨【BFS】
2018-04-27 15:36
375 查看
t记录每个格子最早被砸的时间,bfs(x,y,t)表示当前状态为(x,y)格子,时间为t。因为bfs,所以先搜到的t一定小于后搜到的,所以一个格子搜一次就行
#include<iostream> #include<cstdio> #include<queue> using namespace std; const int N=505,inf=1e9,dx[]={-1,1,0,0,0},dy[]={0,0,-1,1,0}; int n,m,t ; bool v ; struct qwe { int x,y,t; qwe(int X=0,int Y=0,int T=0) { x=X,y=Y,t=T; } }; queue<qwe>q; int read() { int r=0,f=1; char p=getchar(); while(p>'9'||p<'0') { if(p=='-') f=-1; p=getchar(); } while(p>='0'&&p<='9') { r=r*10+p-48; p=getchar(); } return r*f; } inline bool ok(int x,int y,int z) { return x>=0&&y>=0&&t[x][y]>z&&!v[x][y]; } int main() { n=read(); for(int i=0;i<=500;i++) for(int j=0;j<=500;j++) t[i][j]=inf; for(int i=1;i<=n;i++) { int x=read(),y=read(),z=read(); for(int j=0;j<5;j++) if(x+dx[j]>=0&&y+dy[j]>=0) t[x+dx[j]][y+dy[j]]=min(t[x+dx[j]][y+dy[j]],z); } q.push(qwe(0,0,0)); v[0][0]=1; while(!q.empty()) { int x=q.front().x,y=q.front().y,z=q.front().t; q.pop(); if(t[x][y]==inf) { printf("%d\n",z); return 0; } for(int i=0;i<4;i++) if(ok(x+dx[i],y+dy[i],z+1)) { v[x+dx[i]][y+dy[i]]=1; q.push(qwe(x+dx[i],y+dy[i],z+1)); } } puts("-1"); return 0; }
相关文章推荐
- 【bzoj1611】【Usaco2008 Feb】Meteor Shower流星雨 (bfs)题解&代码
- 【bzoj 1611】 [Usaco2008 Feb]Meteor Shower流星雨 bfs
- bzoj1611[Usaco2008 Feb]Meteor Shower流星雨
- BZOJ_1611_[Usaco2008_Feb]_Meteor_Shower流星雨_(bfs)
- bzoj1611【Usaco2008 Feb】Meteor Shower 流星雨
- 1611: [Usaco2008 Feb]Meteor Shower流星雨
- [Usaco2008 Feb]Meteor Shower流星雨[BFS]
- 模拟+BFS-BZOJ-1611-[Usaco2008 Feb]Meteor Shower流星雨
- 【BZOJ】1611: [Usaco2008 Feb]Meteor Shower流星雨(bfs)
- [BZOJ] 1611: [Usaco2008 Feb]Meteor Shower流星雨
- Bzoj 1611: [Usaco2008 Feb]Meteor Shower流星雨
- 【BZOJ 1611】 [Usaco2008 Feb]Meteor Shower流星雨
- BZOJ 1611: [Usaco2008 Feb]Meteor Shower流星雨
- BZOJ1611: [Usaco2008 Feb]Meteor Shower流星雨
- BZOJ 1611: [Usaco2008 Feb]Meteor 4000 Shower流星雨
- bzoj 1611: [Usaco2008 Feb]Meteor Shower流星雨(DP)
- BZOJ 1611: [Usaco2008 Feb]Meteor Shower流星雨
- BZOJ——1611: [Usaco2008 Feb]Meteor Shower流星雨
- bzoj:1611 [Usaco2008 Feb]Meteor Shower流星雨
- bzoj 1611: [Usaco2008 Feb]Meteor Shower流星雨