萌新求助后两个WA
查看原帖
萌新求助后两个WA
360214
nalemy楼主2021/2/20 17:42

详见我的代码

#include<iostream>
#include<cmath>
#include<algorithm>
#include<iomanip>
#define N 500
using namespace std;

int x[N], y[N], f[N];
struct edg {
    edg() {}
    edg(int _u, int _v, double _w):
        u(_u), v(_v), w(_w) {}
    int u, v; double w;
} e[N*N];
double inline dis(int i, int j) {
    return sqrt((x[i]-x[j])*(x[i]-x[j]) + (y[i]-y[j])*(y[i]-y[j]));}
bool inline cmp(edg a, edg b) {return a.w < b.w;}
int getf(int x) {return f[x] == x ? x : f[x] = getf(f[x]);}
int main() {
    int s, p, l=0; cin >> s >> p;
    for (int i=0; i<p; i++) {
        f[i] = i, cin >> x[i] >> y[i];
        for (int j=0; j<i; j++)
            e[l++] = edg(i, j, dis(i, j));
    }
    sort(e, e+l, cmp);
    double mx = 0;
    for (int i=0, j=0; i<l && j<p-s; i++) {
        if (getf(e[i].u) != getf(e[i].v)) {
            f[e[i].u] = e[i].v;
            mx = e[i].w, j++;
        }
    }
    cout << fixed << setprecision(2) << mx;
    return 0;
}

我的代码所有数组都是从11开始的,大佬勿喷

2021/2/20 17:42
加载中...