I need help
查看原帖
I need help
142327
C6H2CH3_NO2_3楼主2021/6/25 19:32

70 points WA 3

#include<bits/stdc++.h>
#define ll long long
#define maxn 2005
#define ld long double
using namespace std;
ll read(){
    ll f=1,k=0;
    char c=0;
    while(c<'0'||c>'9'){
	if(c=='-')f=-1;
	c=getchar();
    }
    while(c>='0'&&c<='9'){
	k=k*10+c-'0';
	c=getchar();
    }
    return k*f;
}
void out(ll x){
    if(x<0){
        x=-x;
	putchar('-');
    }
    if(x>=10)out(x/10);
    putchar(x%10+'0');
}
struct node{
    ll s,e;
    ld l;
}road[maxn*maxn];
ll n,k,cx[maxn],cy[maxn],cnt,fa[maxn],cntk;
ld dist(ll x,ll y,ll xx,ll yy){
    return sqrt(int(x-xx)*(x-xx)+(y-yy)*(y-yy));
}
bool cmp(node a,node b){
    return(a.l<b.l);
}
ll findfa(ll x){
    if(fa[x]==x)return x;
    return fa[x]=findfa(fa[x]);
}
int main(){
   // freopen("a.in","r",stdin);
    n=read();k=read();
    cntk=n;
    for(ll i=1;i<=n;i++){
        cx[i]=read();cy[i]=read();
	fa[i]=i;
	for(ll j=1;j<n;j++){
	    cnt++;
	    road[cnt].s=i;
	    road[cnt].e=j;
	    road[cnt].l=dist(cx[i],cy[i],cx[j],cy[j]);
	}
    }
    sort(road+1,road+cnt+1,cmp);
    for(ll i=1;i<=cnt;i++){
        ll s=road[i].s,e=road[i].e;
	ld l=road[i].l;
	if(findfa(s)==findfa(e))continue;
        if(cntk<=k){
	    printf("%0.2Lf\n",l);
	    
	    return 0;
	}
        fa[findfa(e)]=findfa(s);
	cntk--;
    }
   // cout<<cntk;
    return 0;
}

Thank you

2021/6/25 19:32
加载中...