BFS只有80分,帮忙看看。
查看原帖
BFS只有80分,帮忙看看。
310664
吴锦洋楼主2020/10/23 13:54
#include<bits/stdc++.h>
using namespace std;
int main()
	{int a,b,c;
	cin>>a>>b>>c;
	int x[a+1];
	int d[a+1];
	int l=0,r=0;
    x[r]=b;
    d[b]=0;
    r++;
    int s[a+1];
    for(int e=1;e<=a;e++)
    	{cin>>s[e];
    	if(e!=b)
    		{d[e]=100000;
			}
		}
		int xx;
		while(l<r&&l<=a)
			{
			xx=x[l]+s[x[l]];
			if(xx>0&&xx<=a)
				{
				if(d[xx]>d[x[l]])
					{d[xx]=d[x[l]]+1;	
					x[r]=xx;
					r++;
				}
				}
			xx=x[l]-s[x[l]];
			if(xx>0&&xx<=a)
				{
				if(d[xx]>d[x[l]])
					{d[xx]=d[x[l]]+1;
					
					x[r]=xx;
					r++;
					}
				}
				l++;
			}
	    if(d[c]!=100000)
	    	{cout<<d[c];
			}
			else
			{cout<<-1;
			}
			return 0;
	}
2020/10/23 13:54
加载中...