设为首页 加入收藏

TOP

zoj 3103 Cliff Climbing(spfa )(二)
2015-07-20 17:44:52 来源: 作者: 【 】 浏览:4
Tags:zoj 3103 Cliff Climbing spfa
eam" #include"algorithm" using namespace std; #define N 105 const int inf=(int)1e10; int w,h,ans; char e[N][N]; int mark1[N][N],mark2[N][N]; //记录左右脚走到某一点时的最小时间 struct node { int x,y,t,f; //f记录走到该点是左脚(-1)还是右脚(1) }; bool judge(int x,int y) //判断该点是否能走 { if(x>=0&&x =0&&y q; node cur,next; cur.t=0; for(i=0;i =mark1[u][v]) continue; next.x=u; next.y=v; mark1[u][v]=next.t; q.push(next); } } } } } if(cur.f==-1) { next.f=1; for(i=-2;i<=2;i++) { for(j=1;j<=3;j++) { if(abs(i)+abs(j)<=3) { u=x+i;v=y+j; if(judge(u,v)) { if(e[u][v]=='T') { ans=min(ans,cur.t); //printf("%d\n",ans); continue; } next.t=cur.t+e[u][v]-'0'; if(next.t>=mark2[u][v]) continue; next.x=u; next.y=v; mark2[u][v]=next.t; q.push(next); } } } } } } } int main() { int i,j; while(scanf("%d%d",&w,&h),w||h) { for(i=0;i >e[i][j]; mark1[i][j]=mark2[i][j]=inf; } } ans=inf; spfa(); if(ans>=inf) printf("-1\n"); else printf("%d\n",ans); } return 0; }


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇poj 2096 Collecting Bugs(期望) 下一篇Leetcode 二分查找 Search a 2D M..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·常用meta整理 | 菜鸟 (2025-12-25 01:21:52)
·SQL HAVING 子句:深 (2025-12-25 01:21:47)
·SQL CREATE INDEX 语 (2025-12-25 01:21:45)
·Shell 传递参数 (2025-12-25 00:50:45)
·Linux echo 命令 - (2025-12-25 00:50:43)