RT,前面都A了,最后一个点T了。
代码如下:
#include <bits/stdc++.h>
using namespace std;
int h,f,ans=100000;
struct place{
int x,y,minn;
}ft[10005];
bool cmp(place a,place b){
return a.y<b.y;
}
int main(){
cin>>h>>f;
for(int i=1;i<=f;i++)scanf("%d%d",&ft[i].x,&ft[i].y),ft[i].minn=1000000;
sort(ft+1,ft+f+1,cmp);
queue<int> q;
for(int i=1;i<=f;i++){
if(ft[i].y<=1000)q.push(i),ft[i].minn=1;
else break;
}
while(!q.empty()){
if(h-ft[q.front()].y<=1000){
ans=min(ans,ft[q.front()].minn);
q.pop();
continue;
}
for(int i=1;i<=f;i++){
if(ft[i].minn>ft[q.front()].minn+1&&sqrt(pow((ft[i].x-ft[q.front()].x),2)+pow((ft[i].y-ft[q.front()].y),2))<=1000){
q.push(i);
ft[i].minn=ft[q.front()].minn+1;
}
}
q.pop();
}
cout<<ans;
return 0;
}