https://www.luogu.org/problemnew/show/P1433
并不是每一个求最短距离就是bfs,这个肯定是dfs。
直接计算15!可以知道枚举必定超时,但是!
我们dfs非常方便最优性剪枝!
这个是不加最优性剪枝的版本,果断T了:
#includeusing namespace std;#define ll long longinline double sq(double d){ return d*d;}int n;struct Point{ double x,y; double dis(Point &p){ return sqrt(sq(x-p.x)+sq(y-p.y)); }}p[16];double ans=1e64;int used[16];void dfs(int id,double dis,int cnt=0){ if(cnt>=n){ //ans=min(ans,dis); //printf("%.2f\n",dis); if(dis