hdu 1458 bfs模板化写法
来源:互联网 发布:aspnet源码 编辑:程序博客网 时间:2024/06/06 03:16
背景:1.编译错误:next和系统命名冲突。2.wa:起点大于楼层的情况未考虑。wawawa了一下午,我把走过就把内容设为-1的方法,改为由flag数组标记是否访问就对了。然后实验,把访问过的标记为-100000,也ac!!!说明题目中ki存在小于0的情况!!!!!存在-1!!!!!与题意不符!!wa了一下午。。。
我的代码:
#include<cstdio>#include<iostream>#include<cstring>#include<queue>using namespace std;int floor[299],n,e;struct state{int x,count;}now,next1;void bfs(state temp){ queue<state> q; temp.count=0; q.push(temp); while(!q.empty()){ now=q.front(); if(now.x == e){ printf("%d\n",now.count); return; }else{ if(floor[now.x]){ next1.x=now.x+floor[now.x]; if(next1.x >= 1 && next1.x <= n && floor[next1.x]!= -1000000 ){ next1.count=now.count+1; q.push(next1); } } if(floor[now.x]){ next1.x=now.x-floor[now.x]; if(next1.x >= 1 && next1.x <= n && floor[next1.x] != -1000000){ next1.count=now.count+1; q.push(next1); } } floor[now.x]=-1000000; q.pop(); } } printf("-1\n"); return;}int main(void){ while(scanf("%d",&n),n){ scanf("%d%d",&now.x,&e); memset(floor,-1000000,sizeof(floor)); for(int i=1;i <= n;i++) scanf("%d",&floor[i]); if(now.x < 1 || now.x > n) printf("-1\n"); else bfs(now); } return 0;}
0 0
- hdu 1458 bfs模板化写法
- hdu 1312 BFS模板题
- HDU 1195 BFS,双向BFS两种写法
- 模板:HDU 1242: Rescue: (BFS DFS)
- poj 1915 bfs 模板化
- 【模板】BFS
- bfs模板
- BFS模板
- 模板,BFS
- BFS模板
- BFS 模板
- BFS模板
- bfs模板
- bfs模板
- BFS 模板
- BFS模板
- BFS模板
- bfs模板
- PhoneGap项目导入到Androidstudio指南
- 1055. The World's Richest (25)
- Vim命令合集
- Android中MalformedURLException的解决
- NSString的Copy与内存分配
- hdu 1458 bfs模板化写法
- android 菜单栏高度
- Android进程间通讯——Clipboard(剪切板)
- 一次ora 12537问题的解决
- 分布式系统架构中的中间件
- asp.net mvc4 添加分区出现错误 找到多个与名为“home”的控制器匹配的类型
- linux mysql 操作命令
- PhoneGap 4.2.0-0.24.2(Cordova 4.3.0)插件指南
- Eclipse中查询某个类对象被那些类引用