hdu 1548 A strange lift (bfs)
A strange lift
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 8550 Accepted Submission(s): 3241
Here comes the problem: when you are on floor A,and you want to go to floor B,how many times at least he has to press the button "UP" or "DOWN"?
The first line contains three integers N ,A,B( 1 <= N,A,B <= 200) which describe above,The second line consist N integers k1,k2,....kn.
A single 0 indicate the end of the input.
3 3 1 2 5
0
#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
using namespace std; int t[210],vis[210];
int n,a,b;
struct node
{
int cur;
int steps;
}start; int bfs()
{
queue<node> q;
while(!q.empty())
q.pop();
start.cur=a;
start.steps=0;
vis[a]=1;
q.push(start);
node m,temp;
while(!q.empty())
{
temp=q.front();
q.pop();
if(temp.cur==b)
return temp.steps;
int up=temp.cur+t[temp.cur];
if(!vis[up]&&up<=n)
{
vis[up]=1;
m.cur=up;
m.steps=temp.steps+1;
q.push(m);
}
int down=temp.cur-t[temp.cur];
if(!vis[down]&&down>0)
{
vis[down]=1;
m.cur=down;
m.steps=temp.steps+1;
q.push(m);
}
}
return -1;
} int main()
{
while(scanf("%d",&n)&&n)
{
memset(vis,0,sizeof(vis));
scanf("%d%d",&a,&b);
for(int i=1;i<=n;i++)
scanf("%d",&t[i]);
printf("%d\n",bfs());
}
return 0;
}
|
8799270 |
2013-08-02 09:08:53 |
Accepted |
0MS |
248K |
C++ |
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int t[210];
int tot1,tot2,n,a,b;
bool vis[210];
int flag1,flag2;
int res1,res2; void dfs1(int x)
{
//printf("now=%d\n",x);
//printf("tot=%d\n",tot);
if(flag1) return;
vis[x]=true;
if(x==b)
{
res1=tot1;//printf("%d\n",tot);
flag1=1;
return;
}
else if(x>n||x<1) return;
else
{
if(x+t[x]<=n&&vis[x+t[x]]==false)
{
tot1++;
dfs1(x+t[x]);
tot1--;
if(flag1) return;
}
if(x-t[x]>=1&&vis[x-t[x]]==false)
{
tot1++;
dfs1(x-t[x]);
tot1--;
}
}
} void dfs2(int x)
{
//printf("now=%d\n",x);
if(flag2) return;
vis[x]=true;
if(x==b)
{
res2=tot2;
flag2=1;
return;
}
else if(x>n||x<1) return;
else
{
if(x-t[x]>=1&&vis[x-t[x]]==false)
{
tot2++;
dfs2(x-t[x]);
tot2--;
if(flag2) return;
}
if(x+t[x]<=n&&vis[x+t[x]]==false)
{
tot2++;
dfs2(x+t[x]);
tot2--;
}
}
} int main()
{
int i;
while(scanf("%d",&n)&&n)
{
tot1=tot2=0,flag1=flag2=0;
res1=0,res2=0;
memset(vis,0,sizeof(vis));
scanf("%d%d",&a,&b);
for(i=1;i<=n;i++)
scanf("%d",&t[i]);
if(a==b) printf("0\n");
else if(a>n||b>n) printf("-1\n");
else
{
dfs1(a);
memset(vis,0,sizeof(vis));
dfs2(a);
if(flag1==0&&flag2==0) printf("-1\n");
else if(flag1==0&&flag2) printf("%d\n",res2);
else if(flag1&&flag2==0) printf("%d\n",res1);
else printf("%d\n",res2>=res1?res1:res2);
}
}
return 0;
} /* 5 1 4
2 3 1 2 1 ans=2 5 1 5
2 3 1 2 1 ans=3 5 1 5
3 1 1 2 1 ans=-1 3 2 2
1 1 1 ans=0 */
hdu 1548 A strange lift (bfs)的更多相关文章
- hdu 1548 A strange lift
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1548 A strange lift Description There is a strange li ...
- hdu 1548 A strange lift 宽搜bfs+优先队列
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1548 There is a strange lift.The lift can stop can at ...
- HDU 1548 A strange lift (bfs / 最短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1548 A strange lift Time Limit: 2000/1000 MS (Java/Ot ...
- HDU 1548 A strange lift(BFS)
Problem Description There is a strange lift.The lift can stop can at every floor as you want, and th ...
- HDU 1548 A strange lift(最短路&&bfs)
A strange lift Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- HDU 1548 A strange lift (Dijkstra)
A strange lift http://acm.hdu.edu.cn/showproblem.php?pid=1548 Problem Description There is a strange ...
- HDU 1548 A strange lift 搜索
A strange lift Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- HDU 1548 A strange lift (广搜)
题目链接 Problem Description There is a strange lift.The lift can stop can at every floor as you want, a ...
- HDU 1548 A strange lift 题解
A strange lift Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
随机推荐
- IAR FOR ARM 各版本,需要的大家可以收藏了
原创,原帖地址是在阿莫论坛:http://www.amobbs.com/thread-5400051-1-1.html,这里也在博客贴上来供大家参考. 用过Keil和IAR,个人感觉是IAR还是很不错 ...
- Poetize4 创世纪
3037: 创世纪 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 123 Solved: 66[Submit][Status] Description ...
- -_-#setTimeout与setInterval
你真的了解setTimeout和setInterval吗? 存在一个最小的时钟间隔 有关零秒延迟,此回调将会放到一个能立即执行的时段进行触发.JavaScript 代码大体上是自顶向下执行,但中间穿插 ...
- Binary Tree Zigzag Level Order Traversal——LeetCode
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...
- 数学概念——A 几何概型
You are going from Dhaka to Chittagong by train and you came to know one of your old friends is goin ...
- [Locked] Find the Celebrity
Find the Celebrity Suppose you are at a party with n people (labeled from 0 to n - 1) and among them ...
- hdu 4619 二分图最大匹配 ——最大独立集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4619 #include <cstdio> #include <cmath> # ...
- Rules
我们之前处理异常的时候用到过Rules,当然还有很多其他规则.Rules允许弹性的添加或者重定义测试方法的行为.测试者可以重复使用或者扩展下面的某一个Rules,也可以写一个属于自己的规则. 这里先展 ...
- jeety and tomcat plugins In Maven
(转自)maven jetty 插件使用 本机环境 JDK 7 Maven 3.2 Jetty 9.2 Eclipse Luna pom.xml 配置 在你的 pom.xml 文件中添加 jetty ...
- Amoeba for MySQL 非常好用的mysql集群软件
http://docs.hexnova.com/amoeba/ Amoeba for MySQL致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当query 路由功能,专 ...