标签:
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1548
Input
Output
Sample Input
Sample Output
1 #include<iostream> 2 #include<queue> 3 4 using namespace std; 5 6 int k[210],flag[210]; 7 int n,a,b; 8 9 struct node{ 10 int floor; 11 int step; 12 }; 13 14 int bfs(){ 15 node cur,next; 16 queue<node> q; 17 cur.floor = a; 18 cur.step = 0; 19 flag[a] = 1;//最开始把这个给忘记了还WA了一次,我傻! 20 q.push(cur); 21 while(!q.empty()){ 22 cur = q.front(); 23 q.pop(); 24 if(cur.floor == b){ 25 return cur.step; 26 } 27 if(cur.floor+k[cur.floor]<=n && cur.floor+k[cur.floor]>0 && !flag[cur.floor+k[cur.floor]]){ 28 next.floor = cur.floor + k[cur.floor]; 29 flag[cur.floor] = 1; 30 next.step = cur.step + 1; 31 q.push(next); 32 } 33 if(cur.floor-k[cur.floor]>0 && cur.floor-k[cur.floor]<=n && !flag[cur.floor-k[cur.floor]]){ 34 next.floor = cur.floor - k[cur.floor]; 35 flag[cur.floor] = 1; 36 next.step = cur.step + 1; 37 q.push(next); 38 } 39 } 40 return -1; 41 } 42 43 int main(){ 44 while(cin>>n,n){ 45 cin>>a>>b; 46 for(int i=1;i<=n;i++){ 47 cin>>k[i]; 48 flag[i]=0; 49 } 50 cout<<bfs()<<endl; 51 } 52 return 0; 53 }
标签:
原文地址:http://www.cnblogs.com/pngcui/p/4344080.html