这道题是道典型的宽搜问题,我们可以从它的数据量就可以看出深搜要超时,并且最短路要用宽搜。
#include#include using namespace std; queue sm;//宽搜用队列 int d[200001]={ 0},start,end;//d[]代表走到当前点需要的最少步数 int search (){ sm.push(start); for(int i=0;i<=200000;i++)d[i]=1001110;//初始化 d[start]=0; while(sm.size()){ int p=sm.front();sm.pop(); if(p==end)break; if((p-1)>=0&&d[p]+1
cin>>start>>end; cout<