100pts(?) WA on Sub2 #12 #13 求助
查看原帖
100pts(?) WA on Sub2 #12 #13 求助
912750
CarrotMeow楼主2023/6/11 15:52
#include <bits/stdc++.h>
using namespace std;
#define foe(i, a, b) for (int i = a; i <= b; ++i)

inline double sq(double x) {
    return x * x;
}

inline double dst(double x1, double y1, double x2, double y2) {
    return sqrt(sq(x1 - x2) + sq(y1 - y2));
}

int n, quit;
bool vis[20];
double res = 0x666ac666, x[20], y[20], _dst[20][20];

void dfs(int d, int x, double s) {
    if (++quit >= 1e7) 
        cout << fixed << setprecision(2) << res, exit(0);
    if (d > n) res = min(res, s);
    else foe (i, 1, n)
        if (!vis[i]) {
            double tmp = s + _dst[x][i];
            if (tmp >= res) continue;
            vis[i] = 1;
            dfs(d + 1, i, tmp);
            vis[i] = 0;
        }
}

signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    cin >> n;
    foe (i, 1, n) cin >> x[i] >> y[i];
    foe (i, 0, n)
        foe (j, 0, n)
            _dst[i][j] = dst(x[i], y[i], x[j], y[j]);
    dfs(1, 0, 0);
    cout << fixed << setprecision(2) << res;
}

悲惨

2023/6/11 15:52
加载中...