[USACO13OPEN]重力异常What's Up With Gravity
2017-10-04 15:33
253 查看
[USACO13OPEN]重力异常What’s Up With Gravity
最短路题解:
按要求模拟,跑最短路。Code:
#include <iostream> #include <cstring> #include <cstdio> #include <queue> using namespace std; const int N = 505; const int INF = 0x3f3f3f3f; int n,m,g ,sx,sy,tx,ty; char s ; int d [2]; bool vis [2]; struct State{ int x,y,op; State(){} State(int _x,int _y,int _op){ x=_x; y=_y; op=_op; } }; queue<State> q; void upd(State u,State v){ if(d[v.x][v.y][v.op] > d[u.x][u.y][u.op]){ d[v.x][v.y][v.op] = d[u.x][u.y][u.op] + (u.op==v.op?0:1); if(!vis[v.x][v.y][v.op]){ vis[v.x][v.y][v.op]=true; q.push(v); } } } int spfa(){ memset(d,0x3f,sizeof(d)); memset(vis,false,sizeof(vis)); q.push(State(sx,sy,1)); vis[sx][sy][1]=true; d[sx][sy][1]=0; while(!q.empty()){ State u=q.front(); q.pop(); vis[u.x][u.y][u.op]=false; int dx=(u.op==1?1:-1); if(u.x+dx>=1 && u.x+dx<=n){ if(g[u.x+dx][u.y]==0){ upd(u,State(u.x+dx,u.y,u.op)); } else{ if(u.y+1<=m && g[u.x][u.y+1]==0){ upd(u,State(u.x,u.y+1,u.op)); } if(u.y-1>=1 && g[u.x][u.y-1]==0){ upd(u,State(u.x,u.y-1,u.op)); } upd(u,State(u.x,u.y,u.op^1)); } } } return min(d[tx][ty][1],d[tx][ty][0]); } int main(){ scanf("%d%d",&n,&m); for(i d517 nt i=1;i<=n;i++){ scanf("%s",s+1); for(int j=1;j<=m;j++){ if(s[j]=='#') g[i][j]=1; else g[i][j]=0; if(s[j]=='C') sx=i, sy=j; if(s[j]=='D') tx=i, ty=j; } } int ans=spfa(); if(ans==INF) puts("-1"); else printf("%d\n",ans); }
相关文章推荐
- [USACO13OPEN]Luxury River Cruise【模拟】
- [USACO13OPEN]重力异常
- P3084 [USACO13OPEN]照片Photo
- [USACO13OPEN]燃油经济性Fuel Economy
- [USACO13OPEN]What's Up With Gravityp【最短路 / SPFA】
- [USACO13OPEN]照片Photo
- [USACO13OPEN]Fuel Economy【贪心】
- [USACO13OPEN]照片Photo
- 洛谷 P3084 [USACO13OPEN]照片Photo
- 洛谷P3085 [USACO13OPEN]阴和阳Yin and Yang(点分治,树上差分)
- [USACO13OPEN]照片Photo
- ●BZOJ 2442 [Usaco2011 Open]修剪草坪
- BZOJ 1646:[Usaco2007 Open]Catch That Cow 抓住那只牛
- bzoj1573 [Usaco2009 Open]牛绣花cowemb
- BZOJ1604 [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居
- [Usaco2003 Open]Lost Cows
- bzoj 1688 [Usaco2005 Open]Disease Manangement 疾病管理
- BZOJ 1621: [Usaco2008 Open]Roads Around The Farm分岔路口
- [Usaco2007 Open]Fliptile 翻格子游戏
- bzoj2442: [Usaco2011 Open]修剪草坪(单调队列优化dp)